読者です 読者をやめる 読者になる 読者になる

脱初心者なRubyのループ処理の書き方

Ruby/Rails

合計を計算する場合

# 初心者
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(:+)