Ruby:如何访问散列中数组的每个元素,其中散列键是我要访问的数组

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 只需将此处的

我有:

如何在哈希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 

只需将
此处的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