【Ruby】ハッシュの作成とキーワード引数を持つメソッドの作成

2021年6月20日プログラミング

ここで学べるテーマは以下の通りです。

  • Rubyにおけるハッシュの作り方
  • キーワード引数を持つメソッドの作り方
  • キーワード引数を持つメソッドの呼び出し方

空のハッシュを作る

空のハッシュを作成するには、{}で囲みます。

[1] pry(main)> {}
=> {}

キーと値の組合せでハッシュを作る

ハッシュは、キーと値の組合せとなっています。
作成の仕方も次の2通りあります。

[2] pry(main)> {:man => '男性', :woman => '女性'}
=> {:man=>"男性", :woman=>"女性"}

[3] pry(main)> {man: '男性', woman: '女性'}
=> {:man=>"男性", :woman=>"女性"}

どちらもキーはシンボルになっていますが、コロン(:)の付く位置が異なるので注意が必要です。余談ですが、下の書き方の方が一般的だと思います。

キーを指定したハッシュの取得

ハッシュの値を取得するには、キーを指定する必要があります。

[4] pry(main)> hash = {man: '男性', woman: '女性'}
=> {:man=>"男性", :woman=>"女性"}

ハッシュの値を取得する
[5] pry(main)> hash[:man]
=> "男性"

キーとしてシンボルを指定することで、そのキーと組み合わせになっている値を取得できます。

キーワード引数を持つメソッド

ハッシュを使った機能として、キーワード引数を持ったメソッドの呼び出しがあるので、合わせて学習しておきます。

キーワード引数を持たないメソッドは、以下のように定義して呼び出します。

def say_hello(greeting)
  say = "みなさん、#{greeting}"
end

say_hello('おはよう')
=> "みなさん、おはよう"

上記であれば、引数に何を渡すのが正解なのか元々分かりやすいですが、キーワード引数を持たせることでより分かりやすくなります。

def say_hello(greeting: '元気?')
  say = "みなさん、#{greeting}"
end

say_hello(greeting: 'おはよう')
=> "みなさん、おはよう"

このようにキーワード引数を持たせることで、メソッドに渡している引数がどういう意味なのかが読みやすくなります。

また、キーワード引数を持つメソッドの呼び出しには、ハッシュを作るのと同じで、『シンボル: 値』と書きます。

ただし、メソッドのキーワード引数はシンボルではなく、伊藤 淳一さんのQiitaにもこんな記事があります。

Rubyのキーワード引数はシンボルっぽく定義するけど、シンボルそのものではない、という話

今後もハッシュの書き方に慣れて、使いこなせるようになっていきたいです。