class TestClass
attr_accessor :name, :id
end
values = ["test1", "test2"]
mapped_values = values.map{|value|
test_class = TestClass.new
test_class.name = value
test_class.id = #some random number
return test_class
}
puts mapped_values
显然这不起作用,它只返回第一个值,而不是整个新构造的列表。 我有这个测试脚本,我想要实现的是它从Array.map操作返回其中包含值name和id的TestClass列表。我只是想在Ruby中找到最好的方法。
我可以做这样的事情
tests = []
values.each do |value|
test_class = TestClass.new
test_class.name = value
test_class.id = #some random number
tests << test_class
end
我相信一定有更好的方法吗?
答案 0 :(得分:3)
如果您想使用地图,请删除回访。
mapped_values = values.map{|value|
test_class = TestClass.new
test_class.name = value
test_class.id = #some random number
test_class
}
传递的块是Proc和Procs不允许显式返回调用。有关详细信息,请参阅Why does explicit return make a difference in a Proc?