如何使用更少的守卫来模仿数组?

How to imitate arrays using less guards?

有没有可能做这样的事情? 或者是否有更简单、更合适的 «sugar» 解决方案?

.bd (@border:0, @style:[solid,double,dotted]){
    border: @border * 1px @style;
}

.dummy-style{
   .bd(1, @[3]); //border: 1px dotted;
}

你不需要模仿数组,因为数组已经存在于 Less 中(它们只是没有 [] 运算符,因为它在 CSS 中已经有另一个语义)。

.bd(@border, @style) {
    border: @border * 1px extract(solid double dotted, @style);
}

.dummy-style {
   .bd(1, 3);
}

(我不算那个:)

无论如何都不是 "sugar"。许多人会认为这是反人类的密码混淆:当除了你之外的任何人看到 .bd(1, 3) 时,她怎么知道这到底是什么意思?但是,当然完全由您决定是否接受 "write-only" 代码。