これは「Ruby脳にはCrystalつらい Advent Calendar 2015」の25日目の記事です。
Ruby の名前付き引数の例です。
def hoge(a, b=1, c: 2) p [a, b, c] end hoge(123) #=> [123, 1, 2] hoge(123, 456) #=> [123, 456, 2] hoge(123, c: 789) #=> [123, 1, 789] hoge(123, 456, c: 789) #=> [123, 456, 789]
a は通常の引数、b はデフォルト値を持つ引数、c は名前付き引数です。 名前付き引数は専用の記述方法があります。
Crystal の記述は Ruby とは少し異なります。
def hoge(a, b=1, c=2) p [a, b, c] end hoge(123) #=> [123, 1, 2] hoge(123, b: 456) #=> [123, 456, 2] hoge(123, c: 789) #=> [123, 1, 789] hoge(123, b: 456, c: 789) #=> [123, 456, 789] hoge(123, 456) #=> [123, 456, 2] hoge(123, 456, c: 789) #=> [123, 456, 789] hoge(123, 456, 789) #=> [123, 456, 789]
デフォルト値を持つ引数は名前付き引数にもなります。
Crystal の方が自然でいいですね!(個人の感想です)
追記 2016-05-14
Crystal 0.16 で、デフォルト値を持たない引数も名前付き引数として使えるようになりました。