ruby - `+': Fracpri 不能被强制转换为 Fixnum (TypeError)
问题描述
代码:
class Fracpri
attr_accessor:whole, :numer, :denom, :dec, :flofrac
def initialize()
puts "Hey! It's an empty constructor"
end
def getFraction(whole,numer,denom)
@whole=whole
@numer=numer
@denom=denom
end
def showFraction
puts "#{whole} #{numer}/#{denom}"
end
def +(obj)
puts "Before adding the constant: #{whole} #{numer}/#{denom}"
obj.whole= self + obj.whole
obj.numer= self + obj.numer
obj.denom= self + obj.denom
puts "After adding the constant x=#{obj}: #{whole} #{numer}/#{denom}"
end
end
r3=Fracpri.new()
r3.getFraction(1,2,3)
r2=Fracpri.new()
r2.getFraction(4,6,5)
r1=Fracpri.new()
r1.getFraction(4,6,5)
r3=5+r1
我在此操作中遇到错误
我无法重载此运算符,它显示错误“`+':Fracpri 无法强制转换为 Fixnum (TypeError)”
解决方案
5
是一个Integer
。Integer#+
要求参数必须是Integer
,正确实现coerce
协议,或响应to_int
。你Fracpri
不这样做。