未定义的方法+

时间:2013-11-13 17:58:43

标签: ruby

这个错误是什么意思?我无法让转换工作。英里假设转换为km和km到英里。我想知道我是否搞砸了计算。不确定这个电话是如何与班级无关的......谢谢

代码

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)

2 个答案:

答案 0 :(得分:1)

它的意思是:Distance类没有方法+,因此Ruby不知道如何添加d1d2。 Ruby无法为您实现该方法,您必须先自行编程才能添加实例。

答案 1 :(得分:0)

d1 + d2

相当于:

d1.+(d2)

这只是一个方法调用。由于+类中未定义Distance方法,因此会出现错误。