Ruby: map collect each的区别

collect

collect做的事情就是將array內的資料一一拿出來處理,處理完後再傳回array所以topics.collect(&:id)就是把topics內所有的id都拿出來存成另一個array

topics = [{id:1, title:"topic1"}, {id:2, title:"topic2"}]
topics.collect(&:id)
# => [1,2]

进阶做法,我们可以设定回传的数值类型

t.collect{|t| t.id.to_f }
# 或是更簡單一點:
t.collect(&:id).collect(&:to_f)
# 回傳都會是一樣的
# => [1.0,2.0]

each

each跟map/collect的区别是,each把阵列里面的每个元素都打印出来,但是并不做任何的修改。最后回传回阵列。