避免";没有名为“的参数”;Sass混合中的错误

避免";没有名为“的参数”;Sass混合中的错误,sass,Sass,我想知道我需要如何编写SASS mixin,它接受一个定义的参数列表和默认值,并忽略所有其他参数。基本上,我想知道如何更改@mixin dummy,这样它就不会向我抛出“mixin dummy没有名为$xyz的参数”错误 使用arglist获取mixin参数: @mixin dummy( $a: true, $c: auto, $args... ) { height:#{map-get($params,xyz)}; } $params: ( a: false, xyz:

我想知道我需要如何编写SASS mixin,它接受一个定义的参数列表和默认值,并忽略所有其他参数。基本上,我想知道如何更改
@mixin dummy
,这样它就不会向我抛出“mixin dummy没有名为$xyz的参数”错误


使用arglist获取mixin参数:

@mixin dummy(
  $a: true,
  $c: auto,
  $args...
) {
  height:#{map-get($params,xyz)};
}

$params: (
  a: false,
  xyz: 'auto'
);
.dummy{
  @include dummy($params);
}


/*Outputs*/

.dummy {
  height: auto;
}

..
附加到
$params
以将其展开到args列表中

$params: (
  a: false,
  xyz: 'auto'
);
.dummy{
  @include dummy($params...);
}
您也可以将其内联

.dummy{
  @include dummy((
    a: false,
    xyz: 'auto'
  )...);
}

更多关于

的信息,这并没有真正达到预期效果。如果我在代码中
@debug$a
,它不会返回false,而是
(a:false,xyz:'auto')
,因此我无法访问默认值。我在这个问题上做了一些调查,我认为我根本无法达到我想要达到的目标。不过还是要感谢您的帮助=)我的解决方案是使用默认值
null
简单地定义所有可能的命名参数,以避免出现错误。
.dummy{
  @include dummy((
    a: false,
    xyz: 'auto'
  )...);
}