少变量自串联

时间:2015-05-22 15:12:56

标签: javascript css less

.a {
  @a: 1;
  @b: 2;
  @concat: @a;
  @concat: ~"@{concat}@{b}";
  margin: @concat;
}

给出错误。

  

语法错误:递归过多

但是,这个

.a {
  @a: 1;
  @b: 2;
  @concat: e(`(function (a, b) {
    var concat = "" + a;
    concat += b;
    return concat;
  })(@{a}, @{b})`);
  margin: @concat;
}

会起作用。

是否有一个技巧可以将字符串与LESS联系起来(没有concat1concat2等变量)?

请注意,上面的代码不是简化主题,因为它将使用条件。代码必须生成

.optional-conditional-class1, .optional-conditional-class2, .optional-conditional-class3 {
....
}

similar循环方式。这就是为什么我想用类列表形成连接字符串。

1 个答案:

答案 0 :(得分:1)

是的,基本上,它是可能的,但不是在同一范围内。我最终得到了像这样的递归方法

    .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;
    }