我查看了生成网格的 twitter bootstrap mixin.less。有这行代码:
.offsetX (@index) when (@index > 0) {
(~".offset@{index}") { .offset(@index); }
.offsetX(@index - 1);
}
.offsetX (0) {}
有谁知道那有什么.offsetX (0)
用?
我查看了生成网格的 twitter bootstrap mixin.less。有这行代码:
.offsetX (@index) when (@index > 0) {
(~".offset@{index}") { .offset(@index); }
.offsetX(@index - 1);
}
.offsetX (0) {}
有谁知道那有什么.offsetX (0)
用?
由于.offsetX (@index)
在索引大于0时是递归的,并且通过减法迭代,所以这种情况代表了递归函数的终点。
如果将 @index 设置为 12,它将.offset12, .offset11,..., .offset1
为.offset0
.
当预处理器尝试解析 mixin 调用时.offsetX (0)
,when关键字将防止使用递归 mixin。如果没有找到另一个 mixin,则会导致错误,有点像调用未定义的函数。
因此,终止的情况.offset (0) {}
是干净地退出递归。
如果你想玩它,这里有一个基本的演示,你可以尝试用终端案例注释掉这一行,然后在重新运行时观察异常。