作者热门文章
- xml - AJAX/Jquery XML 解析
- 具有多重继承的 XML 模式
- .net - 枚举序列化 Json 与 XML
- XML 简单类型、简单内容、复杂类型、复杂内容
我有以下类(class):
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
与您的类的实例结合起来。要解决此问题,请像这样定义 coerce
方法:
def coerce(other)
if other.is_a?(Fixnum)
[other, @value]
else
super
end
end
我不会详细介绍 coerce
是如何工作的,因为我们已经有了一个 great answer。在这里。
关于ruby - 如何在 Ruby 中将自定义类隐式转换为整数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21080964/
我是一名优秀的程序员,十分优秀!