zsh だと連想配列がイケル
だけど,というお話.
というのを知ってときめいた.
ところが 1 要素の値に半角スペースが入っている時の扱い方がわからない.
もうちょっと調べなくちゃ...
もし正しい使い方ご存知の方,ご覧になってらしたら,是非ツッコミを入れて頂けるとしあわせです.
zsh での連想配列 associative array
参照先を見ていただくのが正しいのでしょうが,消えて欲しくない情報ですので,知ったことをここに記載しておきたいと思います.
配列名を "name",キーを "key",その値を "value" として.
-
連想配列の生成は,;
typeset -A name
name=(key value key value ...)- `typeset -A name` と宣言が**必ず**必要.
- 変数っぽく $name や ${name} な記述はしない.
- 区切りは,すべて半角スペース.;
- 各要素は,"key value" の順で,両者は半角スペース区切り.
- 要素どうしは,これも半角スペース区切り.
- 要素のセット方法は他に ;
name[key]=value
*1name+=(key value)
$name[key]
${name[key]}
- value を返します.
name[key]=value
.
- 変数っぽく $name や ${name} な記述はしない.
$name
${(k)name}
${#name}
こんなところかしら?
以下リファレンスさせていただいたサイト一覧.;
ありがとうございます.
できなかったこと
以下は仕様の話ではないと思います.
ただ自分が知らないだけのことだと思っています.
ちょっと内輪ネタ感満載ですが,今後の為に,作業履歴として落としておきたいと思います.*2
その1. 連想配列は,配列の要素としてつかう事はできない?
どうしてそんなことするん,とツッこまれるかもしれませんが,連想配列をさらに配列で管理することを思い立ちました.
こんなイメージです. 配列 array[index] の中に,連想配列 name(key1 value1 key2 value2 key3 value3) を格納する.と.
array[1] … name(key1 valueA1 key2 valueB1 key3 valueC1)
array[2] … name(key1 valueA2 key2 valueB2 key3 valueC2)
array[3] … name(key1 valueA3 key2 valueB3 key3 valueC3)
:
で問題は取り出す時なのですが,どうやるんでしょ.
配列の要素に入れると,連想配列の特徴である key,valueの意味合いがなくなってしまって,単なる純粋な要素になってしまう.
う~んどうやるのでしょう...
やめて,普通の配列にして cut で拾う方法をとることにしました.
key1is=`echo ${name} | cut -d , -f 1`
その2. 連想配列の value に半角スペースを使うことはできない?
value,半角スペースを含めてひとつの value としたい場合の上手い操り方が分らなかったです.
こんなイメージです.;
% typeset -A check
% check=(id 001 name "志村 けん" say "そーです あだすがへんなおずさんです")
% echo $check
001 志村 say あだすがへんなおずさんです
やめて,普通の配列 ordinary arrays を使う事にしました.
うーん.
時間とって manpage を解く必要がありますね...
う〜ん...
はてなブログでの markdown って何か中途半端な気がするなあ.
結局,html を打つことになり,
文章書くより,その形成で時間を要するというイタイ現実.
はてなブログ,Markdown記法に対応しました - はてなブログ開発ブログ,は実はちょっと嘘で,"(何となく)" って注釈いれておいて欲しいw.
まぁ,"だったら使うんじゃねぇーよ" と,と言われるんでしょうがw
ということで,おしまい.
中途半端で,なのに大風呂敷.
気持ちは分かりますが,そいういうのうんこだと思いますです.
以上.