下面的代码会产生一个错误,当通过Web要点为Visual Studio 2013年编译我认为插件使用的胜绩,但它已经失败了其他编译器也是如此。少递归错误 - 调用由含命名空间嵌套命名空间包含递归混入生产“未定义”
.root {
#namespace {
.not-recursive(@x) {
[email protected]{x} { margin: (1px * @x); }
}
.recursive(@x; @i: 0) when (@i =< @x) {
.not-recursive(@i);
.recursive(@x; (@i + 1));
}
}
/* This works */
.sub-class {
#namespace > .not-recursive(99);
#namespace > .recursive(5);
}
/* Recursion fails */
#namespace > .not-recursive(100);
#namespace > .recursive(5); // Why???
}
如果我注释掉最后一行,并且注释Why???
它编译。
如果我将#namespace
放在.root
之外,仍然使用#namespace > .recursive()
它编译。
如果我不得不冒险一个猜测,我猜测它试图在mixin中调用.root .recursive()
而不是.root #namespace .recursive()
,但这仅仅是基于四处游戏并且看到什么有效/无效的猜测。
这不是什么大不了的事情,但它真的困扰我,我想知道我是否错过了文档中的某些内容或发现了一个新问题。
我想这只是一个错误。 – 2014-10-18 08:39:54
我建议文档应该提及名称空间应该在主要作用域中定义。 – 2014-10-18 12:05:33
@Bass Jobsen嗯,没有这样的要求。命名空间可以在任何地方定义(例如命名空间等命名空间)。从技术上讲,命名空间只是简单的规则集,并且与任何其他规则集一样,它允许无限嵌套。 – 2014-10-18 12:47:29