ruby - 哈希迭代,以数组为键

标签 ruby

假设我有以下代码:

#!/usr/bin/env ruby -wKU

h = {}
h[[1, "a"]] = "first"
h[[2, "b"]] = "second"

puts h.to_yaml

# case 1 - works fine
h.each do |k, v|
  num, char = k
  puts "key = #{[num, char]}; value = #{v}"
end

# case 2 - works fine
h.each_key do | num, char |
  puts "key = #{[num, char]}; value = #{h[[num, char]]}"
end

# case 3 - Doesn't work
# how can I get all three values in one go?
h.each do | [num, char], v |
  puts "key = #{[num, char]}; value = #{v}"
end

我将如何创建一个迭代器,我可以在其中获取 block 参数中分配的所有 3 个值(key[0]、key[1]、value)?这可能吗?

最佳答案

h.each do | (num, char), v |
  puts "key = #{[num, char]}; value = #{v}"
end

关于ruby - 哈希迭代,以数组为键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8596090/

相关文章:

ruby-on-rails - Ruby:调用从数组中的哈希中获取值

ruby-on-rails - Rails ActiveRecord 保存错误未定义方法 `[]' for nil :NilClass

ruby-on-rails - 在Docker上对ruby进行 bundle 优化

ruby - 字符串/范围比较问题

python - 将 XML 数据与来自 XML 模式的数据类型信息相结合

ruby-on-rails - rails : check if the model was really saved in after_save

ruby-on-rails - 如何从 hstore 列中获取二维散列作为输出?

mysql - Ruby 1.9、MySQL 字符编码问题

Ruby Redis 与 em-synchrony 和 PubSub 问题

ruby-on-rails - 如何使用 Rails 应用程序的 ruby​​-prof 输出 KCacheGrind 的调用树分析?