为什么Ruby有Numeric.new?

为什么Ruby有Numeric.new?,ruby,oop,Ruby,Oop,我无法想象这样的用例。你能吗?Ruby中的所有东西都是对象,甚至是类。因此,没有Numeric的构造函数意味着根本没有Numeric类 看一看。它只是一个基类。您永远不会直接使用它。您永远不会以这种方式使用numeric类。它是Ruby中所有数字类型的基类 Ruby的数值类构成了一个完整的 数字塔,提供多种 数字和数字的表示 数字表示法 来源:类定义了一个新的实例方法。因此,Numeric上的新的类方法只是它的一个保留-它什么也不做-将其视为动物从远祖继承的退化器官之一-就像人类的附录一样 请注

我无法想象这样的用例。你能吗?

Ruby中的所有东西都是对象,甚至是类。因此,没有
Numeric
的构造函数意味着根本没有
Numeric


看一看。它只是一个基类。您永远不会直接使用它。

您永远不会以这种方式使用numeric类。它是Ruby中所有数字类型的基类

Ruby的数值类构成了一个完整的 数字塔,提供多种 数字和数字的表示 数字表示法


来源:

类定义了一个
新的
实例方法。因此,
Numeric
上的
新的
类方法只是它的一个保留-它什么也不做-将其视为动物从远祖继承的退化器官之一-就像人类的附录一样


请注意,
Numeric
的子类,如
Fixnum
Float
及其亲属明确定义了
new
方法。我想他们只是没有为
Numeric
取消定义它,因为这个类的直接实例从来都不存在,保留它也没有坏处。

这是错误的。许多Ruby类没有
new
方法,请参阅:TrueClass、FalseClass、NilClass、Fixnum、Float等,这是一个小细节。如果需要,类可以取消定义它的
new
方法。Numeric不需要,因为您需要能够对其进行子类化,并将其用作基础
TrueClass
和类似的东西不应该这样使用。这种“次要细节”使得你的这句粗体陈述完全无效:“因此,没有数字类的构造函数就意味着根本没有数字类!”仅仅因为现在没有构造函数,并不意味着根本不可能有一个构造函数。如果一个类没有构造器而掉进了树林,它会生成一个实例吗?也许我的回答有点“大胆”,但是。。。是的,TrueClass和NilClass有一个构造函数,它们只是没有明确定义,而Numeric没有。如果根本没有构造函数,那么类一开始就可能不存在。但是你没有解释为什么
new
仍然存在:)你的意思是
Numeric。new
不是
Numeric
意味着“实例方法”(但在本例中
new
是一个类方法)不知道。标题已更正。谢谢。是的,我就是这样发现的。在irb中玩,尝试Float.new('NaN'),失败(NoMethodError)。选择Numeric.new(“NaN”),结果是一个无用的(?)数字。
a = Numeric.new  # doesn't take an argument