Rubyの連想配列もPerlと同じくハッシュと呼ばれます。定義するには{}で囲んで、キーと値を書きます。
takk@deb9:~$ irb irb(main):001:0> a = {'dog' => '犬', irb(main):002:1* 'cat' => '猫', irb(main):003:1* 'fox' => '狐'} => {"dog"=>"犬", "cat"=>"猫", "fox"=>"狐"} irb(main):004:0> a['cat'] => "猫" irb(main):005:0>
数値もキーでできます。
irb(main):001:0> a = {10 => '犬', irb(main):002:1* 20 => '猫', irb(main):003:1* 30 => '狐'} => {10=>"犬", 20=>"猫", 30=>"狐"} irb(main):004:0> a[20] => "猫" irb(main):005:0>
文字列や数値だけではなく、Rubyのハッシュではシンボルが使えます。:から始める名称はシンボルとなります。
irb(main):001:0> a = {:dog => '犬', irb(main):002:1* :cat => '猫', irb(main):003:1* :fox => '狐'} => {:dog=>"犬", :cat=>"猫", :fox=>"狐"} irb(main):004:0> a[:fox] => "狐" irb(main):005:0>
Perlの連想配列の定義は,
%変数名=( キー => 値, …)
で、参照するのは、
$変数名{キー}
でしたが、Perlと比べてRubyの方が分かりやすい気がします。連想配列なんだから、配列と同じアクセス方法って覚えやすいですし。
Rubyのシンボルが使える点に関しては、Perlでは文字列のクォートが省略できますので、Perlの方が短く書けるのではないでしょうか。
takk@deb9:~$ perl -e '%a=(dog=>"犬",cat=>"猫"); print "$a{cat}\n"' 猫 takk@deb9:~$
Perlでは=>は,にできるので、偶数個の配列をハッシュにするなんてこともできますね。
takk@deb9:~$ perl -e '@array=1..6;print "@array\n"; %hash = @array; print "$hash{3}\n"' 1 2 3 4 5 6 4 takk@deb9:~$
コメント