トップ «前の日記(2010/06/24 (木) ) 最新 次の日記(2010/06/26 (土) )» 編集 RSS feed

HsbtDiary


2010/06/25 (金) [長年日記]

[ruby] inject 的な何か

みんな大好きな inject ですが、1.8.7 からは

[1, 2, 3].inject{|a, i| a+i}

を symbol を渡して

[1, 2, 3].inject(&:+)

と書けるようになってとても嬉しいですよね。

そんな inject ですが

[].inject(&:+)

の結果は nil になってしまうので

[].inject(&:+).map(&:method)

なんてやると nil エラーになってしまうので要注意です。というのも

[].first => nil

だから。

上記のコードで nil エラーを起こさないようにするためには

[].inject([], &:+)

とやって、初期値を与えてやればいいのでした。