在 Ruby 中,当创建一个新类时,我们将这样定义构造方法:
class Thing
def initialize
do_stuff
end
end
但是,当实际创建对象的实例时,我们发现自己不是initialize
在调用实例,而是new
在调用类。
既然如此,我们为什么不改为定义::new
呢?
class Thing
def self.new
do_stuff
end
end
::new
场景中是否有一些initalize
没有定义的东西?这两者有什么不同吗?定义会::new
起作用吗?还是只是def initialize
比 短(不)def self.new
?
我认为这种差异必须有充分的理由。