我有一个在' struct '中定义的结构。它可以添加一些ruby代码,如下一个例子?
def strct(i)
{
"mwdata": [
i.times do //incorrect
{
"mwtype": "cell",
"mwsize": [
1,
3
],
"mwdata": [
10,
23,
199
]
}
end //incorrect
]
}
end
您可以使用*
进行数组相乘,但这将创建一个引用相同哈希对象的数组,更改一个,更改所有数组。(正如@mudasobwa在评论中指出的)
def strct(i)
{ "mwdata": [ {...} ] * i }
end
也可以使用tap:
def strct(i)
{ "mwdata" => [].tap do |array|
i.times do
array << { .... }
end
end
}
end
或注入:
def strct(i)
{ "mwdata" => 1.upto(i).inject([]) do |array|
array << { .... }
end
}
end
注意
我理解这个问题的原因,因为我经常发现自己做这样的事情:
def strct(i)
result = { "foo" => [] }
i.times do
result["foo"] << "Something #{i}"
end
result
end
快速谷歌给了我这个:hash_builder。