单独访问嵌套数组中的对象

Access objects separately in a nested array

如何分别访问这个散列中的三个对象?

hash = {"Paul" => [25, 18]}

在此代码中,

hash.each_pair do |k, v|
  print "#{k}: "
  v.each do |n|
    print "#{n} "
  end
  print "\n"
end

变量 n 作为单个对象访问 [25, 18]。例如 |n, m| 不起作用。

你可以像下面这样

hash = {}
hash["Paul"] = [25, 18]

hash.each_pair do |k, (v1, v2, *rest)|
    print "#{k}: "
    print "#{v1} "
    print "#{v2} "
    print "\n"
end
#=> Paul: 25 18 

或者,您可以尝试以下操作:

hash = {}
hash["Paul"] = [25, 18]

hash.each_pair do |k, v|
    print "#{k}: "
    v.tap { |m, n| 
        print "#{m} "
        print "#{n} "
    }
    print "\n"
end
#=> Paul: 25 18 
p [hash.keys, hash.values].flatten
  # ["Paul", 25, 18]