在我的程序中我得到一个错误,上面写着./ruby_camping.rb:91:in` - ':nil无法强制进入Fixnum(TypeError).我想做的是结账我刚刚签到的客人.以下是结账部分的代码块:
def self.check_out
puts "Welcome to checkout!"
puts $camping.current_guests
puts " Here are the current guests, who do you want to checkout?!"
puts "State plot number "
plot = gets.chomp.to_i
guest = $camping.current_guests[plot-1]
puts "State the date for your checkout (a number bigger then " + guest.arrived.to_s + "): "
# it should not be possible for a guest to checkout before she has checked in
departureDate = gets.chomp.to_i
guestStayedDays = departureDate - guest.arrived #Days the guest has stayed
while (guestStayedDays < 1) do
puts "The date for checkout is not valid. The guest checked in " + guest.arrived.to_s
puts "Please state a new date."
departureDate = gets.chomp.to_i
guestStayedDays = departureDate - guest.arrived
end
guest.departure = departureDate
guest.plot.increase(guestStayedDays) # increases the electricity meter
puts guest # prints the guest
$camping.current_guests[plot-1] = nil # emptys the plot
end
end
Run Code Online (Sandbox Code Playgroud)
为什么离开日期仍然是零?感谢您的帮助!
mik*_*kej 24
要获得更详细的答案,您必须指明程序中第91行是哪一行.然而,为了你指出正确的方向,如果你看到的nil can't be coerced into Fixnum话,那就意味着在一些右手边的-是nil.例如
irb(main):001:0> 5 - nil
TypeError: nil can't be coerced into Fixnum
from (irb):1:in `-'
from (irb):1
Run Code Online (Sandbox Code Playgroud)
从你的代码我可以看到的唯一可能的例子是,guestStayedDays = departureDate - guest.arrived所以我会检查的值guest.arrived.
如果a 的左侧有东西-是nil例如departureDate,plot那么你会得到它undefined method '-' for nil:NilClass.
| 归档时间: |
|
| 查看次数: |
24529 次 |
| 最近记录: |