quabbinの日記: Arrays#inject
日記 by
quabbin
Rubyの新リファレンスを見ていたら、Arrays#injectの記述が変なことに気づいた。
どこがかというと、例。
確かに結果として、
result = 0
[1, 2, 3, 4, 5].each {|v| result += v }
p result # => 15
は15で問題ないのだが…少し意味が違う。
これは足し算を引き算にするとすぐ気づける問題だ
result = 0
[1, 2, 3, 4, 5].each{|v| result -= v }
p result # => -15
p [1, 2, 3, 4, 5].inject{|a,b| a - b} # => -13
となると、eachを利用したときの表現としては、
a = [1, 2, 3, 4, 5]
result = a.first
a.last(a.size - 1).each{|v| result -= v }
p result # => -13
とか書くのが良いのだろう。
しかし、これはこれでどうなのだろうか。
意味が少し違うとはいえ、元の例の方が分かりやすく見えるのは確かで…。
Arrays#inject More ログイン