可以说我有一个默认值的mixin
$default: 1;
@mixin test($p : $default) {
@if () {
// Do something if $p was 4passed?
} @else {
// Do something if $p was not passed?
}
}
如果我这样称呼mixin,则有两个不同的地方:
@include test(); // A
@include test(1); // B
有什么办法可以区分默认值(A)和覆盖默认值(B)的区别吗?
如果稍微修改一下,mixin就会起作用(因为您实际上需要将有问题的参数传递给
@if
指令。并且您希望将参数默认为null
orfalse
,这意味着什么都没有传递)。演示
如果您想将其他值设置为默认值,则只需在if语句中检查该特定值(例如,“将if
$p
设置为默认值”)。在这里,您将如何通过设置变量的默认值来执行此操作,就像在示例中一样。但是,这不会区分“ 没有传递参数 ”和“ 传递的值等于默认值 ”。演示
但实际上,您可以结合使用这两种方法...检查是否传递了某些东西
$p
(如果传递了或不传递,则执行其他操作),如果没有传递任何东西,请将set$p
的值设置为default。演示
现在,它应该适用于除,的布尔值以外的所有值
false
,null
并且false
都可以false
使用@if
指令进行验证。因此,要允许将其false
作为参数值传递,您将需要使用更具体的表达式。例如:演示
瞧瞧,这应该可以解决问题-除非您出于某种原因想要通过
null
作为论点。然后,您需要使用其他默认值,例如极不可能作为参数传递的字符串,例如"no arguments have been passed"
=)演示