我不确定我在哪里看到过这个,或者我是否只是认为我看到过它,但我希望能够调用一个方法来创建一个具有相同名称的类的实例。所以,而不是:
# The class is called 'Vector3', for example:
Vector3.new(x,y,z)
我想要一个实例化类的同名方法,如下所示:
Vector3(x,y,z) #<- returns instance of Vector3 class
您如何在 Ruby 中定义它?
最佳答案
正如@Eli 提到的,您可以在内核中定义一个方法:
def Kernel.Vector3(*args)
Vector3.new(*args)
end
Ruby 为 Array
、Complex
、Float
、Hash
、Integer
执行此操作>、Rational
和 String
您可能见过的地方。
它起作用的原因是 Object
包含 Kernel
,因此程序中的所有对象(除了直接继承自 BasicObject
的对象)都将具有那个方法。
但是,这样做是不合常理的、不必要的(你用一个额外的方法使所有对象困惑)、令人困惑(大写的标识符应该是常量)并且通常被看不起。
关于ruby - 在 Ruby 中,如何定义一个与类同名的类构造方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40968342/