gpt4 book ai didi

ruby - Fixnum 未定义的方法新

转载 作者:数据小太阳 更新时间:2023-10-29 08:00:03 26 4
gpt4 key购买 nike

当我尝试 fixnum.new 时出现未定义方法错误。

Fixnum.new  # undefined method `new' for Fixnum:Class (NoMethodError)

为什么它给出未定义的方法。 fixnum 类背后的机制是什么。请解释。

如果我想做一些类似 fixnum 的类(一个没有新方法的类),我应该怎么做?

我正在使用下面的代码,但我感觉它的代码很糟糕。

class TestClass < Fixnum
end

当我尝试创建如下新对象时:

TestClass.new #undefined method `new' for TestClass:Class

这是正确的方法吗?或者,如果您有其他方法,请在此处说明。

最佳答案

正如我所解释的in this answer , Fixnum 不提供 .new 方法。那是因为您希望通过以下方式创建一个新的 Fixnum(或 Integer 或 Float 等后代)

1.3
1

而且因为尽管它们是对象,但 Fixnum 没有多个实例。在同一个答案中,我还解释了如何在不提供此类初始化的对象周围使用代理类。

这是一个代码示例

class MyFixnum < BasicObject
def initialize(value)
@fixnum = value
end

def inc
@fixnum + 1
end

def method_missing(name, *args, &block)
@fixnum.send(name, *args, &block)
end
end

m = MyFixnum.new(1.3)
m.to_i
# => 1

关于ruby - Fixnum 未定义的方法新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21479224/

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