Sass3.3のHashのように使えるデータ型: Map(マップ) を見てみた

Sass3.3 changelog #SassScript Maps にあるようにすでに追加されている。

Mapsという新しいデータ型は、Hashや連想配列のようにデータを扱えます。これまではlist形式でなんとか対応することなどもしていたので、便利になりました。

Mapのデータは
[ruby]
$map: (
key1: value1,
key2: value2,
key3: value3,
child: (
key4: value4,
key5: value5
)
);
[/ruby]

のように : (コロン) でセパレートしたkey-valueのペアを ( ) で囲む必要がある。
利用したいデータの形式によってはネストさせることもできる。

mapデータを操作する関数には、

  • map-get($map, $key)
  • map-merge($map1, $map2)
  • map-keys($map)
  • map-values($map)
  • map-has-key($map, $key)

が準備されている。

map-get($map, $key)

mapから与えられた$keyに関連づけられたvalueを返す (ない場合はnull)。

map-merge($map1, $map2)

2つのmapを合わせて、新しいmapを返す。

map-keys($map), map-values($map)

mapのkeyまたはvalueをlist形式で返す。

map-has-key($map, $key)

mapに与えられたkeyのペアがあるかを返す。

あと、each を使ってkey, valueを取得できるので
設定値のみmapに持たせることでdynamicにスタイルを生成できたり、これまでよりも柔軟な変更ができるようになる。

以下が出力される

Comments