今まで良く理解せずに使っていたのですが…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]"