【问题标题】:`+': Fracpri can't be coerced into Fixnum (TypeError)`+': Fracpri 不能被强制转换为 Fixnum (TypeError)
【发布时间】:2020-01-12 06:23:15
【问题描述】:

代码:

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 can't be coerced into Fixnum (TypeError)”

【问题讨论】:

  • 5Fixnum,而 r1Fracpri。您想要在这里添加的预期结果是什么?
  • 我需要将 5 添加到 r1 @Thang 的所有成员中

标签: ruby


【解决方案1】:

5 是一个IntegerInteger#+ 要求参数必须是Integer,正确实现coerce 协议,或者响应to_int。你的Fracpri 不会做任何事情。

【讨论】:

  • 很难给出比这更具体的建议,因为代码从根本上被破坏了,要让它工作基本上需要扔掉它并从头开始。粗略一瞥,我发现至少有 15 个严重程度不同的问题。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-10-24
相关资源
最近更新 更多