rubyのメソッドのいろいろな引数についてまとめてみた

・省略可能な引数
引数にデフォルト値を与えることによって、引数を省略して呼び出すことができる

引数(message)を省略しない

引数(message)を省略してみる

・可変長引数
仮引数の頭に*をつけることによって、任意の数の引数と配列として受け取ることができる

2つの引数を求めるメソッドに対して、3つの引数を設定して呼び出しているように見えますが、後ろの2つの引数はmessagesに配列として渡ります。

・配列の展開
今後は逆に実引数の頭に*をつけることで、配列を複数の引数に展開してメソッドを呼び出すことができます。

・キーワード引数

初期値を定義できる

省略して実行

引き数を指定して実行
msg: とキーワードを指定して呼び出す。

キーワードを指定しないとArgumentErrorが発生する

存在しないキーワードを指定してもArgumentErrorが発生する。

メリットは呼び出し側から何に何を設定しているのか一目瞭然になること。
あとは引き数が増えたときでも
キーワードを指定するので、下のように順序が入れ替わって問題ない。
これは地味に大事で呼び出し側からの引き数の設定順序の依存を取り払う事ができる。
もちろんキーワード名に対する依存は増えるが、順序性の無意味な依存に比べたらかなりマシと思われる。

指定なしや

順序を入れ替えてもOK

引き数が少ないと冗長にも見えるが、増えてくると読みやすくなるかも。

これと似たようなことがハッシュを使って実現できる。
メソッドは引き数としてハッシュを受け取ることを想定し、ハッシュのkeyにアクセスするように書くことで、キーワード引数と似たような事ができる。

さらに、↑で説明した省略可能な引き数と組み合わせることで

のようにできる。
msg = args[:msg] || “こんにちは”
の部分はargs[:msg]がnilまたはfalseの場合は”こんにちは”が評価され代入される仕組みである。

まだまだ追記予定

スポンサーリンク
スポンサーリンク
スポンサーリンク

シェアする

  • このエントリーをはてなブックマークに追加

フォローする

スポンサーリンク
スポンサーリンク

コメント

  1. writeessay より:

    write an essay for me http://dekrtyuijg.com/

    Amazing information. Cheers!