Sự khác nhau giữa Hash.new(0) and {} trong Ruby

Em có 2 đoạn mã này:

[4, 8, 15, 16, 23, 42].inject(Hash.new(0)) { |a, i| a.update(i => i) }

def occurrences(str)
	str.scan(/\w+/).inject(Hash.new(0){ |build, word|  build[word.downcase] +=1}
  	build
	end
end

Nhưng chỉ ở phần 1 thì em thay thế Hash.new(0) thành {} thì không lỗi nhưng ở phần 2 thì lại lỗi. Giải thích giùm em ạ, em cảm ơn rất nhiều

Thực ra i += 1 chỉ là viết tắt của i = i+1 chứ += ko phải là op riêng.

3 Likes
83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?