Rubyのキーワード引数

def hoge(a: 123, b: {})
    p [a, b]
end

hoge
hoge(a: 456, b: 999)
hoge({a: 456, b: 999})

Rubyだとキーワード引数といって、こんなふうにメソッドを呼び出す時にシンボルを使って引数を指定して渡すことができます。

メソッド側ではキーワード引数をシンボルで定義しているように見えますが、こっちはシンボルではないそうです。 シンボルではないので、メソッドの中でp [a, b]のように普通の変数として指定されています。

シンボルに見えるけどシンボルではないという詳しい話については、以下の記事がわかりやすかったです。

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

キーワード引数はメソッドの引数の順番を気にする必要がないというメリットがあるのですが、
なによりメソッドにどんな内容の引数を渡しているかが一目見て分かるのが良いですね。

ちなみにキーワード引数はRuby以外だとPythonにも実装されているそうです。

PHPにもあったらいいな。
引数のリファレンスが見られるIDEも多いですが、コードで引数の意味を書けるキーワード引数はいいなーと思いました。