如何在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. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |