我是新手Rails学习者。我想尝试一些ruby语言功能,例如缩短以下方法:
def update(params)
attrs = []
params[:attributes].each do |attr_hash|
attr = Attribute.new attr_hash
attrs.push attr
end
...
end
像:
def update(params)
attrs = fill_attrs_from_params params
...
end
def fill_attrs_from_params(params)
attrs = params[:attributes].each do |attr_hash|
Attribute.new(attr_hash)
end
end
然而,第二个不是第一个。我在这里想念什么?
编辑:我无法确定第二个是如何工作的,应用程序出错了,而且我也是使用rails调试的初学者。
答案 0 :(得分:3)
.map
是什么
attrs = params[:attributes].map do |attr_hash|
Attribute.new(attr_hash)
end
.each
非常多才多艺。使用一些辅助代码,您可以使其执行任何。这就是它的弱点。当您考虑使用.each
时,在Enumerable上几乎总是一种方法,可以用更少的代码更好地完成工作(当然,除了明显的用例:对每个元素执行操作一个集合。在这里你使用.each
。)