首页 > 解决方案 > `+': 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)”

标签: ruby

解决方案


5是一个IntegerInteger#+要求参数必须是Integer,正确实现coerce协议,或响应to_int。你Fracpri不这样做。


推荐阅读