sass:map
- Sass de Dart
- since 1.23.0
- LibSass
- ✗
- Sass de Ruby
- ✗
Atualmente apenas a Sass de Dart suporta carregar módulos embutidos com a @use
. Os utilizadores de outras implementações devem chamar as funções usando os seus nomes globais.
💡 Fato Divertido:
As bibliotecas e sistema de desenho da Sass tendem a partilhar e sobrepor configurações que são representadas como mapas encaixados (mapas que contêm mapas que contêm mapas).
Para ajudar a trabalhar com mapas encaixados, algumas funções de mapa suportam operações profundas. Por exemplo, se passares várias chaves para map.get()
, seguirão estas chaves para encontrar o mapa encaixado desejado:
map.deep-merge($map1, $map2) //=> map
- Sass de Dart
- since 1.27.0
- LibSass
- ✗
- Sass de Ruby
- ✗
Idêntico ao map.merge()
, exceto que os valores do mapa encaixado também são combinados recursivamente:
SCSS Syntax
$helvetica-light: (
"weights": (
"lightest": 100,
"light": 300
)
);
$helvetica-heavy: (
"weights": (
"medium": 500,
"bold": 700
)
);
@debug map.deep-merge($helvetica-light, $helvetica-heavy);
// (
// "weights": (
// "lightest": 100,
// "light": 300,
// "medium": 500,
// "bold": 700
// )
// )
@debug map.merge($helvetica-light, $helvetica-heavy);
// (
// "weights": (
// "medium: 500,
// "bold": 700
// )
// )
Sass Syntax
$helvetica-light: ("weights": ("lightest": 100, "light": 300))
$helvetica-heavy: ("weights": ("medium": 500, "bold": 700))
@debug map.deep-merge($helvetica-light, $helvetica-heavy)
// (
// "weights": (
// "lightest": 100,
// "light": 300,
// "medium": 500,
// "bold": 700
// )
// )
@debug map.merge($helvetica-light, $helvetica-heavy);
// (
// "weights": (
// "medium: 500,
// "bold": 700
// )
// )
map.deep-remove($map, $key, $keys...) //=> map
- Sass de Dart
- since 1.27.0
- LibSass
- ✗
- Sass de Ruby
- ✗
Se $keys
estiver vazio, retorna uma cópia de $map
sem um valor associado ao $key
:
SCSS Syntax
$font-weights: ("regular": 400, "medium": 500, "bold": 700);
@debug map.deep-remove($font-weights, "regular");
// ("medium": 500, "bold": 700)
Sass Syntax
$font-weights: ("regular": 400, "medium": 500, "bold": 700)
@debug map.deep-remove($font-weights, "regular")
// ("medium": 500, "bold": 700)
Se $keys
não estiver vazio, segue o conjunto de chaves incluindo $key
e excluindo a última chave em $keys
, da esquerda para a direita, para encontrar o mapa encaixado apontado para a atualização.
Retorna uma cópia de $map
onde o mapa escolhido como alvo não tem um valor associado à última chave em $keys
:
SCSS Syntax
$fonts: (
"Helvetica": (
"weights": (
"regular": 400,
"medium": 500,
"bold": 700
)
)
);
@debug map.deep-remove($fonts, "Helvetica", "weights", "regular");
// (
// "Helvetica": (
// "weights: (
// "medium": 500,
// "bold": 700
// )
// )
// )
Sass Syntax
$fonts: ("Helvetica": ("weights": ("regular": 400, "medium": 500, "bold": 700)))
@debug map.deep-remove($fonts, "Helvetica", "weights", "regular")
// (
// "Helvetica": (
// "weights: (
// "medium": 500,
// "bold": 700
// )
// )
// )
map.get($map, $key, $keys...)
map-get($map, $key, $keys...)
Se $keys
estiver vazio, retorna o valor no $map
associado ao $key
.
Se $map
não tiver um valor associado ao $key
, retorna null
.
SCSS Syntax
$font-weights: ("regular": 400, "medium": 500, "bold": 700);
@debug map.get($font-weights, "medium"); // 500
@debug map.get($font-weights, "extra-bold"); // null
Sass Syntax
$font-weights: ("regular": 400, "medium": 500, "bold": 700)
@debug map.get($font-weights, "medium") // 500
@debug map.get($font-weights, "extra-bold") // null
- Sass de Dart
- since 1.27.0
- LibSass
- ✗
- Sass de Ruby
- ✗
Apenas Sass de Dart suporta chamar map.get()
com mais de dois argumentos.
Se $keys
não estiver vazio, segue o conjunto de chaves incluindo $kye
e excluindo a última chave no $keys
, da esquerda para a direita, para encontrar o mapa encaixado apontado para a averiguação.
Retorna o valor no mapa escolhido como alvo associado à última chave em $keys
.
Retorna null
se o mapa não tiver um valor associado à chave, ou se qualquer chave em $keys
estiver em falta num mapa ou fizer referência a um valor que não é um mapa:
SCSS Syntax
$fonts: (
"Helvetica": (
"weights": (
"regular": 400,
"medium": 500,
"bold": 700
)
)
);
@debug map.get($fonts, "Helvetica", "weights", "regular"); // 400
@debug map.get($fonts, "Helvetica", "colors"); // null
Sass Syntax
$fonts: ("Helvetica": ("weights": ("regular": 400, "medium": 500, "bold": 700)))
@debug map.get($fonts, "Helvetica", "weights", "regular") // 400
@debug map.get($fonts, "Helvetica", "colors") // null
map.has-key($map, $key, $keys...)
map-has-key($map, $key, $keys...) //=> boolean
Se $keys
estive vazio, retorna verdadeiro se $map
contiver um valor associando à $key
:
SCSS Syntax
$font-weights: ("regular": 400, "medium": 500, "bold": 700);
@debug map.has-key($font-weights, "regular"); // true
@debug map.has-key($font-weights, "bolder"); // false
Sass Syntax
$font-weights: ("regular": 400, "medium": 500, "bold": 700)
@debug map.has-key($font-weights, "regular") // true
@debug map.has-key($font-weights, "bolder") // false
- Sass de Dart
- since 1.27.0
- LibSass
- ✗
- Sass de Ruby
- ✗
Apenas a Sass de Dart suporta chamar map.has-key()
com mais de dois argumentos.
Se $keys
não estiver vazia, segue o conjunto de chaves incluindo $key
e excluindo a última chave em $keys
, da esquerda para a direita, para encontrar o mapa encaixado apontado para averiguação.
Retorna verdadeiro se o mapa escolhido como alvo contiver um valor associado à última chave em $keys
.
Retorna falso se não contiver, ou se qualquer chave em $keys
estiver em falta num mapa ou fizer referência a um valor que não estiver num mapa:
SCSS Syntax
$fonts: (
"Helvetica": (
"weights": (
"regular": 400,
"medium": 500,
"bold": 700
)
)
);
@debug map.has-key($fonts, "Helvetica", "weights", "regular"); // true
@debug map.has-key($fonts, "Helvetica", "colors"); // false
Sass Syntax
$fonts: ("Helvetica": ("weights": ("regular": 400, "medium": 500, "bold": 700)))
@debug map.has-key($fonts, "Helvetica", "weights", "regular") // true
@debug map.has-key($fonts, "Helvetica", "colors") // false
map.keys($map)
map-keys($map) //=> list
Retorna uma lista separada por vírgula de todas as chaves no $map
:
map.merge($map1, $map2)
map-merge($map1, $map2)
map.merge($map1, $keys..., $map2)
map-merge($map1, $keys..., $map2) //=> map
⚠️ Atenção!
Na prática, os argumentos exatos para map.merge($map1, $keys..., $map2)
são passados como map.merge($map1, $args...)
. Eles são descritos aqui como $map1, $keys..., $map2
apenas para fins de explicação.
Se numa $keys
forem passadas, retorna um novo mapa com todas as chaves e valores de ambos $map1
e $map2
.
Se ambos $map1
e $map2
tiverem a mesma chave, o valor de $map2
tem prioridade.
Todas as chaves no mapa retorna que também aparecem em $map1
têm a mesma ordem que em $map1
. As novas chaves de $map2
aparecem no final do mapa:
SCSS Syntax
$light-weights: ("lightest": 100, "light": 300);
$heavy-weights: ("medium": 500, "bold": 700);
@debug map.merge($light-weights, $heavy-weights);
// ("lightest": 100, "light": 300, "medium": 500, "bold": 700)
Sass Syntax
$light-weights: ("lightest": 100, "light": 300)
$heavy-weights: ("medium": 500, "bold": 700)
@debug map.merge($light-weights, $heavy-weights)
// ("lightest": 100, "light": 300, "medium": 500, "bold": 700)
- Sass de Dart
- since 1.27.0
- LibSass
- ✗
- Sass de Ruby
- ✗
Apenas a Sass de Dart suporta chamar map.merge
com mais de dois argumentos.
Se $keys
não estiver vazio, segue as $keys
para encontrar o mapa encaixado apontado para a fusão. Se qualquer chave em $keys
estiver em faltando num mapa ou fizer referência a um valor que não for um mapa, define o valor nessa chave para um mapa vazio.
Retorna uma cópia de $map1
onde o mapa escolhido como alvo é substituído por um mapa novo que contém todas as chaves e valores de ambos o mapa escolhido como alvo e $map2
:
SCSS Syntax
$fonts: (
"Helvetica": (
"weights": (
"lightest": 100,
"light": 300
)
)
);
$heavy-weights: ("medium": 500, "bold": 700);
@debug map.merge($fonts, "Helvetica", "weights", $heavy-weights);
// (
// "Helvetica": (
// "weights": (
// "lightest": 100,
// "light": 300,
// "medium": 500,
// "bold": 700
// )
// )
// )
Sass Syntax
$fonts: ("Helvetica": ("weights": ("lightest": 100, "light": 300)))
$heavy-weights: ("medium": 500, "bold": 700)
@debug map.merge($fonts, "Helvetica", "weights", $heavy-weights)
// (
// "Helvetica": (
// "weights": (
// "lightest": 100,
// "light": 300,
// "medium": 500,
// "bold": 700
// )
// )
// )
map.remove($map, $keys...)
map-remove($map, $keys...) //=> map
Retorna uma cópia de $map
sem quaisquer valores associados às $keys
.
Se uma chave em $keys
não tem um valor associado no $map
, é ignorada:
SCSS Syntax
$font-weights: ("regular": 400, "medium": 500, "bold": 700);
@debug map.remove($font-weights, "regular"); // ("medium": 500, "bold": 700)
@debug map.remove($font-weights, "regular", "bold"); // ("medium": 500)
@debug map.remove($font-weights, "bolder");
// ("regular": 400, "medium": 500, "bold": 700)
Sass Syntax
$font-weights: ("regular": 400, "medium": 500, "bold": 700)
@debug map.remove($font-weights, "regular") // ("medium": 500, "bold": 700)
@debug map.remove($font-weights, "regular", "bold") // ("medium": 500)
@debug map.remove($font-weights, "bolder")
// ("regular": 400, "medium": 500, "bold": 700)
map.set($map, $key, $value)
map.set($map, $keys..., $key, $value) //=> map
⚠️ Atenção!
Na prática, os argumentos exatos para map.set($map, $keys..., $key, $value)
são passados como map.set($map, $args...)
. Eles são descritos aqui como $map, $keys..., $key, $value
apenas por fins de explicação.
Se $keys
não forem passadas, retorna uma cópia de $map
com o valor na $key
definida para $value
:
SCSS Syntax
$font-weights: ("regular": 400, "medium": 500, "bold": 700);
@debug map.set($font-weights, "regular", 300);
// ("regular": 300, "medium": 500, "bold": 700)
Sass Syntax
$font-weights: ("regular": 400, "medium": 500, "bold": 700)
@debug map.set($font-weights, "regular", 300)
// ("regular": 300, "medium": 500, "bold": 700)
- Sass de Dart
- since 1.27.0
- LibSass
- ✗
- Sass de Ruby
- ✗
Apenas Sass de Dart suporta chamar map.set()
com mais de três argumentos.
Se $keys
forem passadas, segue as $keys
para encontrar o mapa encaixado apontado para atualização. Se qualquer chave em $keys
estiver faltando num mapa ou fizer referência a um valor que não é um mapa, define o valor nesta chave para um mapa vazio.
Retorna uma cópia de $map
com o valor do mapa escolhido como alvo na $key
definido para $value
:
SCSS Syntax
$fonts: (
"Helvetica": (
"weights": (
"regular": 400,
"medium": 500,
"bold": 700
)
)
);
@debug map.set($fonts, "Helvetica", "weights", "regular", 300);
// (
// "Helvetica": (
// "weights": (
// "regular": 300,
// "medium": 500,
// "bold": 700
// )
// )
// )
Sass Syntax
$fonts: ("Helvetica": ("weights": ("regular": 400, "medium": 500, "bold": 700)))
@debug map.set($fonts, "Helvetica", "weights", "regular", 300)
// (
// "Helvetica": (
// "weights": (
// "regular": 300,
// "medium": 500,
// "bold": 700
// )
// )
// )
map.values($map)
map-values($map) //=> list
Retorna uma lista separada por vírgula de todos os valores em $map
.