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