gpt4 book ai didi

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

转载 作者:数据小太阳 更新时间:2023-10-29 07:30:15 25 4
gpt4 key购买 nike

我有以下类(class):

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

我希望能够,给定 ax=Register.new,键入 3 + axax + 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com