a = Numeric.new # doesn't take an argument
我无法想象这个的使用场景。你能想到吗?
Class
类定义了一个 new
实例方法。因此,Numeric
上的 new
类方法只是从那个方法继承下来的 - 它并没有做任何事情 - 就像动物从远古祖先那里继承下来的剩余器官一样(例如人类的阑尾)。Numeric
的子类(例如 Fixnum
和 Float
及其相关类)明确取消了 new
方法的定义。我猜他们只是没有费心为 Numeric
取消定义,因为这个类的直接实例从未真正存在过,并且保留它也不会造成任何伤害。Ruby 中的所有东西都是对象,甚至包括类。因此,如果没有 Numeric
的构造函数,那么就根本不存在 Numeric
类!
看一下 文档。它只是一个基类。你永远不会(好吧,反正很少会)直接使用它。
new
方法,例如:TrueClass、FalseClass、NilClass、Fixnum、Float等。 - horseyguynew
方法。数字类型不会这样做,因为你应该能够将其作为基类进行子类化并使用它。而 TrueClass
等则不应该像这样使用。 - rfunduknew
仍然存在 :) - horseyguy
Numeric.new
而不是Numeric#new
....#
表示“实例方法”(但在这种情况下,new
是一个类方法)。 - horseyguy