Ruby:如何访问散列中数组的每个元素,其中散列键是我要访问的数组
我有: 如何在哈希1中的Array1和Array2的每个元素内迭代Ruby:如何访问散列中数组的每个元素,其中散列键是我要访问的数组,ruby,Ruby,我有: 如何在哈希1中的Array1和Array2的每个元素内迭代 Array1 = [x, y, z] Array2 = [m, n] a = b hash1 = {Array1 => val1, Array2 => val2, a => c } 像这样的 hash1.each do |t| t[0] #gives me Array1 as a string. I need [x,y,z] end 只需将此处的
Array1 = [x, y, z]
Array2 = [m, n]
a = b
hash1 = {Array1 => val1,
Array2 => val2,
a => c
}
像这样的
hash1.each do |t|
t[0] #gives me Array1 as a string. I need [x,y,z]
end
只需将
此处的Do something
替换为所需的代码,v
将是数组中的值,它不会给您一个字符串。它将为您提供正确的数组
hash1.keys.each do |k|
if k.is_a?(Array)
k.each do |v|
.. Do something here ..
end
end
end
请注意,您是在散列上进行每个操作的。您可以解构键值对,为块提供两个变量,如下所示:
{
[1,2] => 'a'
}.each{|t| puts t[0].class}
# prints array
{
[1,2] => 'a'
}.each{|t| puts t[0][0]}
# prints 1
c从哪里来?什么是
a=b
?请通过编辑您的问题来回答奥雅纳的问题,而不是试图在评论中解释。从风格的角度来看,Ruby中的变量应该是小写
。类是MixedCase
,常量是ALL\u CAPS
。将变量声明为类是令人困惑的。
{a:1, b:2}.each { |k,v| p k; p v }
#prints :a
#prints 1
#prints :b
#prints 2