Ruby(連想配列)

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:~$

コメント

タイトルとURLをコピーしました