【发布时间】:2017-02-19 12:49:33
【问题描述】:
我有两个像下面这样的哈希,
h1 = {"a" => 1, "b" => 2, "c" => 3}
h2 = {"a" => 2, "b" => 2, "d" => 3}
我想遍历 hash1 和 hash2 并找到匹配的键及其值并将其打印在控制台上。 此处的示例应返回输出“b”=> 2。它不适用于以下代码,
h1.each do |key1, value1|
h2.each do |key2, value2|
if ((h2.include? key1) && (h2.include? value1))
puts "matching h2 key #{h2[key2]}and h1 key #{h1[key1]}"
else
puts " don not match h2 key #{h2[key2]}and h1 key #{h1[key1]}"
end
end
end
我基本上来自 C++ 和 Java 背景,使用 for 循环和迭代器很容易做到,但使用 Ruby 则非常困难。
【问题讨论】:
-
您的问题不清楚。 “它不起作用”是什么意思? 如何它不起作用?你有错误吗?如果是,您收到的 precise 错误消息是什么,回溯是什么,错误发生在哪一行?你收到警告了吗?如果是,precise 警告消息是什么?警告出现在哪一行?观察到的行为是否与预期的行为不同?如果是,观察到的行为是什么,预期的行为是什么?请提供确切您想要做什么的规范,包括所有例外、特殊情况……
-
… 极端情况和边缘情况。此外,请提供示例输入和输出作为测试用例,包括异常、极端情况、特殊情况和边缘情况的示例。在标题中,您询问的是“匹配值”。我期望匹配值的结果是
[{"b" => 2}, {"c" => 3}, {"d" => 3}]。在问题正文中,您正在询问“匹配键”。我期望匹配键的结果是[{"a" => 1}, {"a" => 2}, {"b" => 2}]。但是,这些都不符合您想要的{"b" => 2}的结果。
标签: ruby