我已经开始在Less CSS中使用名称空间,并且遇到了一个不规则现象,这似乎是一个错误,而不是设计造成的。
#responsive {
.spacing {
.margin(@property; @side) {
// This WON'T work when called externally.
.margin(@property; @side; @side; @side; @side);
}
.margin(@property; @vertical; @horizontal) {
// This WILL work when called externally.
#responsive.spacing.margin(@property; @vertical; @horizontal; @vertical; @horizontal);
}
.margin(@property; @top; @right; @bottom; @left) {
// This is the function that eventually gets called
}
}
}
该示例显示了具有3个不同签名的重载函数。称为:
#responsive.spacing.margin(padding, 1);
在引用顶部重载然后调用主函数时,出现编译错误。
.margin cannot be referenced...
可以通过应用第二个选项中的完全命名空间名称来解决此问题。
虽然这是一种变通方法,但似乎与名称空间无关,毕竟.margin
只是在同一命名空间.margin
中调用#responsive.spacing
的另一个版本。