Zsh

zsh 5.5で追加された配列・連想配列の新しいシンタックス

2018/04/09 にzsh 5.5がリリースされました。

リリース後しばらくしてRelease Notesに変更内容が掲載されたので確認してみたら、配列・連想配列で新たなシンタックスが使えるようになっていて、それが結構実用的だったので紹介してみようと思います。

配列

基本操作

以下の記事で配列の操作は分かりやすく解説されているのですが、一旦基本をおさらい。
参考: zsh の配列操作の基本から応用まで

> local -a array=(first second third)
> echo $array
first second third

> echo $array[2]
second

> array[4]=fourth
> echo $array
first second third fourth

> array+=fifth
> echo $array
first second third fourth fifth

> echo $array[5]
fifth

zsh 5.5で新しく追加されたシンタックスは以下。
分かりやすくするために前バージョンの5.4.2の動きも掲載します。

  • zsh 5.5
> local -a array=([3]=third [2]=second [1]=first)
> echo $array
first second third
> echo $array[3]
third
  • zsh 5.4.2(比較用)
> local -a array=([3]=third [2]=second [1]=first)
> echo $array
[3]=third [2]=second [1]=first

連想配列

基本操作

こちらも一旦基本をおさらい。
参考: zshの連想配列の使い方まとめ

> local -A associative_array=(key_1 val_1 key_2 val_2 key_3 val_3)
> echo $associative_array
val_1 val_2 val_3

> echo $associative_array[key_3]
val_3

> associative_array[key_2]=new_val_2
> echo $associative_array[key_2]
new_val_2

> echo ${(k)associative_array}
key_1 key_2 key_3

> echo ${(kv)associative_array}
key_1 val_1 key_2 new_val_2 key_3 val_3

zsh 5.5で新しく追加されたシンタックスは以下。

  • zsh 5.5
> local -A associative_array=([key_1]=val_1 [key_2]=val_2 [key_3]=val_3)
> echo $associative_array
val_1 val_2 val_3

> echo $associative_array[key_3]
val_3
  • zsh 5.4.2(比較用)
> local -A associative_array=([key_1]=val_1 [key_2]=val_2 [key_3]=val_3)
zsh: bad set of key/value pairs for associative array

まとめ

特に連想配列については前バージョンまでのシンタックスは少し分かりづらかったですが、zsh 5.5からは直感的に理解できるようになっていて良いです。

今後もこういう便利な機能が追加されていく事に期待。