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)
if(self.whole+(self.numer.to_f/self.denom.to_f) < obj.whole+(obj.numer.to_f/obj.denom.to_f))
puts "Yes"
else
puts "No"
end
end
end
puts "10 question"
r3=Fracpri.new()
r3.getFraction(1,2,3)
r2=Fracpri.new()
r2.getFraction(4,6,5)
r1=Fracpri.new()
r1.getFraction(2,6,5)
r1 += r2
这是我收到的错误消息:
syntax error, unexpected '=', expecting ';' or '\n'
def +=(obj)
^
syntax error, unexpected keyword_end, expecting end-of-input
建议我如何纠正此错误,以便我可以执行重载,我需要使用“ + =“运算符
添加一个常量答案 0 :(得分:3)
无法覆盖=
,也不能覆盖+=
之类的变体。这些是内置关键字,而不是诸如+
之类的方法。
如果您将补丁程序从def +=(obj)
更改为def +(obj)
,您仍然可以调用r1 += r2
,其效果与修补+=
相同。这是因为+=
在后台调用了已修补的+
方法。
顺便说一句,您的+
方法实际上并不返回任何值,因此任何时候调用+=
都将始终为nil ....但是看来这仍然是WIP所以希望您可以解决这一点。