我有以下带有嵌套哈希的数组:
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 用于迭代我的哈希数组的方式?在不改变我的哈希数组的结构的情况下,有人可以帮我理解吗?