2013-11-13 3 views
-1

Что означает эта ошибка? Я не могу заставить преобразование работать. миль, предполагается конвертировать в км и км до миль. Мне интересно, если я испортил расчет. Не знаете, как вызов не связан с классом ... Спасибоundefined method +

код

class Distance 
@@value 
@@unit 


def initialize(value, unit) 
    @@value = value 
    @@unit = unit 

end 

def convert_miles_to_km(miles) 
    return miles * 0.621371 
end 

def convert_km_to_miles(km) 
    return km * 1.60934 
end 


end 

puts "Adding:" 
d1 = Distance.new(1, "m") 
d2 = Distance.new(1, "k") 

puts d1 + d2 

d1 = Distance.new(2, "M") 
d2 = Distance.new(2, "m") 

d3 = d1 + d2 
puts d3 
puts d3.value 
puts d3.unit 

Какой вывод должен быть:

Adding: 
1.621371 Miles 
4 Miles 
4 
m 

, когда я запустить скрипт я получаю ошибку

C:\Users\Phillip\Desktop\Distance>ruby distance.rb 
distance.rb:26:in `<main>': undefined method `+' for #<Distance:0x19c6008 @distance=1> (NoMethodError) 

ответ

0
d1 + d2 

является экв uivalent до:

d1.+(d2) 

Это просто вызов метода. Поскольку метод + не определен в классе Distance, вы получаете ошибку.

1

Это означает, что она гласит: Distance класс не имеет метода +, поэтому Руби не знает, как добавить d1 и d2. Ruby не может реализовать этот метод для вас, вы должны запрограммировать его самостоятельно, прежде чем сможете добавлять экземпляры.