Ruby – 関数

関数の定義

関数はdef...endで定義する。その関数が呼び出されるより前に定義されていなければならない。

関数の戻り値

return文で関数の戻り値を指定できる。

再帰呼び出し

再帰呼び出しにも対応。

デフォルト引数

あまりよくない方法

引数のデフォルト値をPythonと同じように指定できる。

実行時に指定した引数は、デフォルト引数があっても引数の順に入れ替えられる。以下の例の8行目で2つの仮引数に対して1つの実引数を与えているが、その値は1つ目の引数に使われている。

以下の6行目で仮引数名yzを指定して実引数を渡しているが、それらの値はxyに与えられてしまう。これは以下の流れによるものと考えられる。

  • 実行時に与えた引数は、デフォルト引数の有無にかかわらず先頭から順番に与えられる
  • 実行時に指定した引数'y=7''z=8'はそれぞれ式として評価され、その値が7、8となる
  • この2つの値が仮引数の先頭から与えられx=7y=8となり、zはデフォルト値の3が使われる

妥当な方法~キーワード引数

仮引数名を指定して実引数を渡す場合は、以下のようにキーワード引数を使うとよい。ただしキーワード引数で仮引数を指定した場合、実行時には指定を省略してデフォルト値を使うか、仮引数を明示して引数を与える必要がある。

デフォルト値を指定しない仮引数と、デフォルト値を指定したキーワード引数は混在して利用可能。

可変長引数

引数の頭に'*'をつけると配列とみなされ、複数の引数を渡せる。

配列の要素を使った処理の例。

通常の引数と可変長の引数が混在する場合、少なくとも通常の引数に対応する引数を渡す必要がある。

可変長引数の内容は空でもよく、まず通常の引数が埋められた後、その数を超える引数が可変長引数となる。

 

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です