加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

如何在Ruby中隐式将自定义类转换为整数?

发布时间:2020-12-17 02:40:05 所属栏目:百科 来源:网络整理
导读:我有以下课程: class Register attr_accessor :val def initialize @val = 0 endend 我希望能够,给出ax = Register.new,输入3 ax或ax 3并得到相当于3 ax.val的结果.我试过搜索,但无法找到如何在Ruby中完成. 解决方法 要使ax 3工作,您需要在类上定义方法: d
我有以下课程:

class Register
  attr_accessor :val
  def initialize
    @val = 0
  end
end

我希望能够,给出ax = Register.new,输入3 ax或ax 3并得到相当于3 ax.val的结果.我试过搜索,但无法找到如何在Ruby中完成.

解决方法

要使ax 3工作,您需要在类上定义方法:

def +(other)
  @value + other
end

但是,3 x仍然会导致错误,因为解释器将不知道如何将Fixnum与类的实例组合在一起.要解决此问题,请按以下方式定义强制方法:

def coerce(other)
  if other.is_a?(Fixnum)
    [other,@value]
  else
    super
  end
end

我不会详细介绍强制如何工作,因为我们已经有了great answer.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读