別冊とっしーぱんち

IT技術系、Ruby関連、プログラミングお役立ち

キーワード引数でメソッドをわかりやすくする

Rubyのメソッドで使うことができるキーワード引数がとても便利だったのでご紹介します。

使い方は簡単で、メソッドの引数の後ろにコロン入れるだけです。実際のコードはこんな感じになります。

# キーワード引数を使ったメソッド
def show_profile(name:, age: 0)
  puts "#{name}さん #{age}"
end

# 両方入れる。通常の例
show_profile(name:'とっしー', age:18)
# => とっしーさん 18歳

# ageは引数を省略できる。その場合は0が入る。
show_profile(name:'とっしー')
# => とっしーさん  0歳

# 順番は自由に入れ替えることもできる。
show_profile(age:36, name:'とっしー')
# => とっしーさん  36歳

# ハッシュを引数として渡すこともできるようです。
profile = {name: 'とっしー', age: 52}

# その場合は変数の前に**を入れます。
show_profile(**profile)
# => とっしーさん  52歳

メソッド呼び出す側にも引数名を明示するのもわかりやすさが増して好きです。引数が増えてくると順番間違えたりするんですよね。しかも中途半端に動いたりしてしまいます。例えばこんなような例ですね

# 順番間違えそうなメソッド
def show_profile(first_name, family_name)
  puts "#{family_name} #{first_name}"
end

どっちも文字を入れますがあべこべに入れても動いちゃいます。引数2つくらいならまあ間違えないですけども、これが3つ4つと増えてくると混乱してきます。こういうときにキーワード引数使うとわかりやすく、間違えにくいと感じました。