パスワードを忘れた? アカウント作成
472980 journal

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

とか書くのが良いのだろう。

しかし、これはこれでどうなのだろうか。
意味が少し違うとはいえ、元の例の方が分かりやすく見えるのは確かで…。

この議論は賞味期限が切れたので、アーカイブ化されています。 新たにコメントを付けることはできません。
typodupeerror

Stableって古いって意味だっけ? -- Debian初級

読み込み中...