我有一个小方法,将在初始化的'Order'类对象上调用,以获取用户输入,询问他们想要从菜单添加到他们的订单中的项目。方法是:
public $postLink(scope: ng.IScope , element: ng.IAugmentedJQuery, attrs: ng.IAttributes):void {
}
我将菜单存储在数组中,作为对象的“哈希”,之前通过从名为“Dish”的类初始化新对象而创建。这些被添加到名为@menu的实例变量中,即:
def add_to_order
@order = []
while true
puts "Item:"
@item = gets.chomp
break if @item.empty?
puts "Qty?"
@qty = gets.chomp
@order << [@item, @qty]
end
end
我的问题是 - 当获得用户输入时,我如何检查他们输入的项目是否在@menu中包含的列表中,当此@menu不是正常数组时,但是如果更多''对象信息数组?我尝试了以下但是没有用。
@menu=
[[#<Dish:0x007fa1f8953b10 @dish={:name=>"Chicken Stew", :price=>4.5}>,
#<Dish:0x007fa1f883daf0 @dish={:name=>"Beef & Ale Pie", :price=>5.0}>,
#<Dish:0x007fa1f89d86f8 @dish={:name=>"Chicken & Leek Pie", :price=>4.0}>,
#<Dish:0x007fa1f8b5b048 @dish={:name=>"Vegetable Pie", :price=>3.5}>,
#<Dish:0x007fa1f8d03378 @dish={:name=>"Fish Pie", :price=>5.5}>,
#<Dish:0x007fa1f8df1c08 @dish={:name=>"Chips", :price=>2.0}>,
#<Dish:0x007fa1f9993a70 @dish={:name=>"Mushy Peas", :price=>1.5}>]]
答案 0 :(得分:0)
您可以使用find
(或其别名detect
)来阻止:
@menu[0].find { |dish| dish.name == @item }
如果没有匹配的菜,这将返回菜单中的第一道菜,其名称与@item
或nil
匹配。
提示:您可能需要考虑将菜单存储在哈希而不是数组中,因为哈希会允许更快的查找。