Bye Bye Moore

PoCソルジャーな零細事業主が作業メモを残すブログ

キーワード引数を使って初期値設定で楽をする

今まで良く理解せずに使っていたのですが…Ruby2.0以上から導入されたキーワード引数は相当強化されていたようです。

例えば、

def comment( date: TIme.now, msg, user: "UNKNOWN")
  #{user} said: #{msg} [date]
end

と書くと、本体で一々初期値を使うためのロジックを書く必要がなくなります。

c "hello"
#=> "UNKNOWN :hello [2014-11-30 23:45:26 +0900]"

c "hello, again", user: :me
#=> "me :hello, again [2014-11-30 23:45:41 +0900]"

c "Games of the XXXII Olympiad!!", date: Time.new(2020,7.24), user: :TokyoOlympaid
#=> "TokyoOlympaid :Games of the XXXII Olympiad!! [2020-07-01 00:00:00 +0900]"