如何在 Sass 中创建空地图?
How can an empty Map be created in Sass?
以下代码将在变量 $test
中创建一个空映射,但是否有正确的方法来完成此操作?这似乎太老套了,不是获得空地图的最佳方式。
$test: map-remove((default:null), 'default');
@if type-of($test) != map {
@warn "This is not a map: #{inspect($test)}";
}
@else {
@warn "This is a map: #{inspect($test)}";
}
WARNING: This is a map: ()
on line 7 of app/styles/functions/map.scss
可以用一种非常简单的方式创建空地图:
$emptyMap: ();
根据地图上的 official documentation,空列表和地图都是使用 ()
创建的。所以上面的代码是一个完全有效的空映射,但是在测试类型时,控制台会告诉你它是一个列表(注意它的类型仍然是映射或列表)。
$map: ();
@warn "#{type-of($map)}";
// Warning: list
向地图添加内容后,控制台会告诉您这是一张地图。
$map: ();
$newMap: map-merge($map, (1: test));
@warn "#{type-of($newMap)}";
// Warning: map
没有更好的本机方法可以做到这一点,但您可以缩短它。
$map: map-remove((x:x), x);
.foo {
output: type-of($map); // map
}
另一个解决方案是使用自定义函数。
@function empty-map($x: x) {
@return map-remove(($x:$x), $x);
}
$map2: empty-map();
$map3: empty-map();
.foo {
output: type-of($map2); // map
output: type-of($map3); // map
}
以下代码将在变量 $test
中创建一个空映射,但是否有正确的方法来完成此操作?这似乎太老套了,不是获得空地图的最佳方式。
$test: map-remove((default:null), 'default');
@if type-of($test) != map {
@warn "This is not a map: #{inspect($test)}";
}
@else {
@warn "This is a map: #{inspect($test)}";
}
WARNING: This is a map: ()
on line 7 of app/styles/functions/map.scss
可以用一种非常简单的方式创建空地图:
$emptyMap: ();
根据地图上的 official documentation,空列表和地图都是使用 ()
创建的。所以上面的代码是一个完全有效的空映射,但是在测试类型时,控制台会告诉你它是一个列表(注意它的类型仍然是映射或列表)。
$map: ();
@warn "#{type-of($map)}";
// Warning: list
向地图添加内容后,控制台会告诉您这是一张地图。
$map: ();
$newMap: map-merge($map, (1: test));
@warn "#{type-of($newMap)}";
// Warning: map
没有更好的本机方法可以做到这一点,但您可以缩短它。
$map: map-remove((x:x), x);
.foo {
output: type-of($map); // map
}
另一个解决方案是使用自定义函数。
@function empty-map($x: x) {
@return map-remove(($x:$x), $x);
}
$map2: empty-map();
$map3: empty-map();
.foo {
output: type-of($map2); // map
output: type-of($map3); // map
}