【Ruby】キーワード引数
はじめに
せっかく調べたのに忘れてしまうため、メモを残しておく。
今回は、メソッドの引数に関することで
キーワード引数
を調べました。
環境
前提条件
- irbかPryが動作すること
やり方
キーワード引数(デフォルト値あり)
実行
[6] pry(main)> # 引数を元にメッセージを表示する [7] pry(main)> def display_message(name: 'Smith', message: 'Sample') [7] pry(main)* p "#{name} : #{message}" [7] pry(main)* end => :display_message [8] pry(main)> [9] pry(main)> display_message "Smith : Sample" => "Smith : Sample" [10] pry(main)> display_message(name: 'John', message: 'Hello') "John : Hello" => "John : Hello" [11] pry(main)> display_message(message: 'Hello', name: 'John') "John : Hello" => "John : Hello" [12] pry(main)> display_message('John', 'Hello') ArgumentError: wrong number of arguments (given 2, expected 0) from (pry):8:in `display_message' [13] pry(main)>
デフォルト引数を定義することで、何も受け取らなかった場合
デフォルトのものが表示されていることがわかります。
また、引数を設定するとその値にとなり、引数の順番を変えても
問題なく表示されていて便利です。
ただし、引数の値だけではエラーとなってしまいキーワードは必須です。
キーワード引数(デフォルト値なし)
実行
[13] pry(main)> # 引数を元にメッセージを表示する [14] pry(main)> def display_message(name:, message:) [14] pry(main)* p "#{name} : #{message}" [14] pry(main)* end => :display_message [15] pry(main)> [16] pry(main)> display_message(name: 'John', message: 'Hello') "John : Hello" => "John : Hello" [17] pry(main)> display_message(message: 'Hello', name: 'John') "John : Hello" => "John : Hello" [18] pry(main)> display_message ArgumentError: missing keywords: name, message from (pry):16:in `display_message' [19] pry(main)> display_message('John', 'Hello') ArgumentError: wrong number of arguments (given 2, expected 0) from (pry):16:in `display_message' [20] pry(main)>
デフォルト値なしの場合、エラーとなってしまったので
こちらを使った方がいい場合もありそうです。
まとめ
今まで意識して使ったことなかったのですが、明確に記述したい場合などがあったら
積極的に使っていきたい機能だと思いました。
ただし、参考資料先でも書かれている通り、冗長になる可能性が十分あるので
適材適所として使っていきます。
参考資料
- 作者: Rubyサポーターズ
- 出版社/メーカー: 技術評論社
- 発売日: 2017/05/17
- メディア: 大型本
- この商品を含むブログ (1件) を見る