`- ': nil не может быть принудительно введен в Fixnum (TypeError) - PullRequest
6 голосов
/ 04 августа 2010

В моей программе я получаю сообщение об ошибке ./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

Как получается, что DepartDate все еще равен нулю?Благодарен за помощь!

1 Ответ

23 голосов
/ 04 августа 2010

Чтобы получить более подробный ответ, вам необходимо указать, какая строка была строкой 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

Из вашего кода я могу видеть единственный возможный пример этого guestStayedDays = departureDate - guest.arrived, поэтому я бы проверил значение guest.arrived.

Если что-то на с левой стороны из - были nil например departureDate или plot, тогда вместо этого вы получите undefined method '-' for nil:NilClass.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...