我有一个哈希:
@menu = { "pizza" => 10, "burger" => 2, "kebab" => 5 }
和order
这样的方法:
def order *food, total
running_total = self.menu.values_at(*food)
cash = running_total.inject(0) {|sum, num| sum + num}
if total == cash
send_text
puts 'Text has been sent'
else
fail 'Not enough cash'
end
end
我试图使用gets.chomp
向客户询问订单。我如何使用用户的回复? gets.chomp
似乎将字符串放入一个数组中,然后将其作为nil
传递给该方法。
这是我到目前为止所做的:
puts 'Please place order'
placed_order = gets.chomp.split(' ')
puts 'Payment?'
total = gets.chomp.to_i
order(placed_order, total)
我如何将总数作为参数传递?
答案 0 :(得分:0)
“...... gets.chomp似乎将字符串放入数组中”
split方法执行此操作
根据您定义order
的方式,您需要执行此操作
order(*placed_order, total)
或者将order
签名重新定义为def order food, total
(这个名称表示食物需要一个阵列,例如食物,可能是“按顺序”)
稍微偏离主题,您可以按如下方式缩短订单方法:
def order *food, total
cash = menu.values_at(*food).inject(&:+)
#...
此外,不应该交换“总额”和“现金”(总数=您想要多少钱;现金==他们给你多少钱)?