【发布时间】:2017-09-28 04:29:07
【问题描述】:
我有以下带有嵌套哈希的数组:
pizza = [
{ flavor: "cheese", extras: { topping1: 1, topping2: 2, topping3: 3} },
{ flavor: "buffalo chicken", extras: { topping1: 1, topping2: 2, topping3: 3} } } ]
如果想验证我是否可以订购带有两种配料的“水牛鸡”披萨。我使用.map 方法遍历哈希数组以验证我想要的“风味”和我想要的“额外”(2 个浇头)是否可用。答对了!我使用的代码有效,返回 true,而且这两个元素确实可用。但是,如果我想检查“水牛鸡”风味是否可用并且是否还有 5 种浇头可用,那么它应该返回 false,但相反,我收到一条错误消息:
Failure Error: expect(Party).not_to be_available(pizza, "buffalo chicken", :toppings5) to return false, got []
这是我的代码:
def self.available?(pizza, flavor, extra)
pizza.map { |x| x if x[:flavor] == flavor && x[:extra] == extra }
end
我试图弄清楚为什么我会返回 [] 而不是 false。也许我不理解 .map 被用来遍历我的哈希数组的方式?在不改变我的哈希数组结构的情况下,有人可以帮我理解吗?
【问题讨论】:
-
“我收到一条错误消息” – 不幸的是,您没有告诉我们错误消息的内容,所以我们能做的最好的事情就是告诉您阅读错误消息并修复错误。
-
"[...] 两种配料的比萨饼" – 这是否意味着至少两种配料,还是您正在寻找两种特定的配料?
-
两个浇头,所以我正在寻找“topping2”返回true。
-
如果我在“水牛鸡”披萨上寻找“topping5”(用于 5 种配料),它应该返回 false,因为它不是“附加”下的选项
-
不要在哈希键名中放入序列(
topping1、topping2),最好使用数组(toppings: [1, 2])