Следующий код создаст пустую карту в переменной $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
Всего 2 ответа
Пустые карты могут быть созданы очень простым способом:
$emptyMap: ();
Согласно официальной документации на картах, пустые списки и карты создаются с помощью метода just ()
. Таким образом, приведенный выше код является вполне допустимой пустой картой, но при тестировании типа консоль скажет вам, что это список (обратите внимание, что его тип по-прежнему остается либо картой, либо списком).
$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
}