Javascript 少变量自级联
这个 给出了一个错误 语法错误:递归太多 但是,Javascript 少变量自级联,javascript,css,less,Javascript,Css,Less,这个 给出了一个错误 语法错误:递归太多 但是, .a { @a: 1; @b: 2; @concat: @a; @concat: ~"@{concat}@{b}"; margin: @concat; } 会有用的 是否有一种技巧可以将字符串与其自身连接起来,只使用较少的变量(不使用concat1,concat2等变量) 请注意,上面的代码不是简化的主题,因为它将使用条件。代码必须生成 .a { @a: 1; @b: 2; @concat: e(`(functi
.a {
@a: 1;
@b: 2;
@concat: @a;
@concat: ~"@{concat}@{b}";
margin: @concat;
}
会有用的
是否有一种技巧可以将字符串与其自身连接起来,只使用较少的变量(不使用concat1
,concat2
等变量)
请注意,上面的代码不是简化的主题,因为它将使用条件。代码必须生成
.a {
@a: 1;
@b: 2;
@concat: e(`(function (a, b) {
var concat = "" + a;
concat += b;
return concat;
})(@{a}, @{b})`);
margin: @concat;
}
以循环的方式。这就是为什么我想用类列表形成连接字符串。是的,基本上是可能的,尽管不在同一范围内。我最终采用了这样的递归方法
.optional-conditional-class1, .optional-conditional-class2, .optional-conditional-class3 {
....
}
.concat试验{
.concat(@rest…){
._concat(@i,@result,@rest…){
@变量:提取(@rest,@i);
.-()当(@i>长度(@rest))时{
@concat:@结果;
}
.-()当(默认值()){
.u concat(@i+1,~{result}{var},@rest);
}
.-();
}
(1,“,@rest);
}
@a:a;
@b:b;
@c:c;
.concat(@a,@b,@c,@b,@a);
concat:@concat;
}
Less是一种声明性语言,因此其变量不能用于修改自身。你想解决什么任务(看起来像)?
if(a条件){concat+=a};如果(b条件){concat+=b}代码>这是简化的js伪代码。它可以很容易地用更少的钱完成,除了。。。嗯,递归的问题。当然,我更新了问题。希望它能解释一些事情。例如,请参见(不要错过我的评论)。简言之:(目前)用更少的资源生成选择器列表的最佳方法是特性,而不是基于字符串的操作。基于字符串的选择器生成仍然是可能的(实际上没有必要进行自连接),但由于许多限制,不建议这样做(只是因为Less中的选择器不是字符串,因此基于字符串的选择器在许多情况下都会断开)。是的,我正在检查您的Less.repo,这很好,再次感谢您提供的提示。这基本上就是(请参见cat
)在一行中所做的…;)@最多七个阶段谢谢!很遗憾,当我在谷歌上搜索“更少的css函数库”时,我没有机会偶然发现它。我会看看你的其他回购协议。我已经用e(`(function(){return Array.prototype.slice.call(arguments).join(“,”)})(@{a},@{b})`)完成了(`(function(){return Array.prototype.slice.call(arguments)。
.concat-test {
.concat(@rest...) {
._concat(@i, @result, @rest...) {
@var: extract(@rest, @i);
.-() when (@i > length(@rest)) {
@concat: @result;
}
.-() when (default()) {
._concat(@i+1, ~"@{result}@{var}", @rest);
}
.-();
}
._concat(1, "", @rest);
}
@a:a;
@b:b;
@c:c;
.concat(@a, @b, @c, @b, @a);
concat: @concat;
}