みんな大好きな 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([], &:+)
とやって、初期値を与えてやればいいのでした。