2

我查看了生成网格的 twitter bootstrap mixin.less。有这行代码:

.offsetX (@index) when (@index > 0) {
  (~".offset@{index}") { .offset(@index); }
  .offsetX(@index - 1);
}
.offsetX (0) {}

有谁知道那有什么.offsetX (0)用?

4

1 回答 1

1

由于.offsetX (@index)在索引大于0时是递归的,并且通过减法迭代,所以这种情况代表了递归函数的终点。

如果将 @index 设置为 12,它将.offset12, .offset11,..., .offset1.offset0.

编辑

当预处理器尝试解析 mixin 调用时.offsetX (0)when关键字将防止使用递归 mixin。如果没有找到另一个 mixin,则会导致错误,有点像调用未定义的函数。

因此,终止的情况.offset (0) {}是干净地退出递归。

如果你想玩它,这里有一个基本的演示,你可以尝试用终端案例注释掉这一行,然后在重新运行时观察异常。

JSFiddle

于 2012-08-17T03:05:30.530 回答