脱初心者なRubyのループ処理の書き方
合計を計算する場合
# 初心者
count = 0
(1..10).each {|n| count += n}
p count
# 脱初心者
p (1..10).inject(0) {|count, n| count + n}
配列に特定の要素をいれる
# 初心者
users = []
[1,2,3,4,5].each do |n|
users << User.find(n) if n > 3
end
# 脱初心者
users = [1,2,3,4,5].select {|n| n > 3}.collect {|n| User.find(n)}
eachループをinject, collect(map), selectで書き換えると、スッキリしてカッコイイ。
追記
# 以下同じ
p (1..10).inject(0) {|count, n| count + n}
p (0..10).inject {|count, n| count + n}
p (1..10).inject(:+)