2012/05/12

可変長引数リストと配列

プログラミング言語 Rubyより

任意の個数の引数を受け付けられるメソッドを書きたい場合がある。そのようなときには、メソッド引数の中のどれか1つの前に*を入れる。メソッド本体では、この引数はその位置に渡された0個異常の引数を含む配列を参照する。このような引数をrest引数と呼ぶ。

プログラミング言語 Ruby 第2版 6.4.2 可変長引数リストと配列 192ページ

# 渡された1個異常の引数のうち最大のものを返す
def max(first, *rest)
  max = first
  rest.each {|x| max = x if x > max}
  max
end

メソッド宣言で*を使えば、複数の引数を集めて1つの配列が作られる。*は、メソッド呼び出しの中で配列(または範囲、Enumerator)の要素をばらまいたり、展開したり、取り除いたりするためにも使える。*は、本物の演算子ではないが、splat演算子と呼ばれることがある。

たとえば、配列の中の最大値を見つけたいものとする。maxメソッドには、次のようにして配列要素を渡すことができる。

data = [3, 2, 1]
m = max(*data) # first = 3, rest=[2,1] => 3
では、*がなければどうなっていただろうか。
m = max(*data) # first = [3,2,1], rest=[] => [3,2,1]
以上プログラミング言語 Rubyより。

rest引数にsplat演算子か。メモメモ。記憶力悪いんで、ぐぐりたいときに単語が出てこないんですよね...。

2012/05/03

Head First Rails ―頭とからだで覚えるRailsの基本


図解が多く、復習をきっちりしてくれるのでわかりやすいです。テキストの中で使うソースやデータはこちらからダウンロードできます。