我有两个数组,一个带符号,另一个带字符串 .
a = [:man, :woman]
b = ["one", "two"]
我正在尝试将每个符号与数组中的每个字符串组合在一起,以便输出为:
[:man_one, :man_two, :woman_one, :woman_two]
我试过了
b = b.to_s
q = []
a.each do |n|
q.push (n.to_s + b.each {|w| "_" + w}).to_sym
end
p q
但这给了我一个错误 . 如何创建新符号?
5 回答
看Array#product
你的错误是因为你试图在
String
(b)上调用each
,因为你用to_s
转换它几行 .如果你想用临时变量q来做这个,你可以像这样写:
一个简单的方法是:
只是给出https://ruby-doc.org/core-2.5.3/Array.html#method-i-product的另一个例子,传递一个块:
在尝试实现预期输出时遇到一些问题:
将b转换为String除了
"[\"one\", \"two\"]"
之外别无其他,这是不可迭代的,所以我猜这一切都搞糟了 .另一方面,你似乎正在尝试迭代a,然后迭代b,但是推向q右边的a元素的值加上对每个b的调用,似乎没有给你任何东西 .
稍作调整即可实现:
嵌套循环上的另一个riff而不改变循环内的外部变量