Ruby 中 Class 和 Module 的区别是 Class 多了 new、allocate、superclass这三个方法,那么 allocate 和 new 分别是什么?
看下面的例子:
class DemoClass
def initialize(*args)
@initialized = true
end
def initialized?
@initialized || false
end
end
puts DemoClass.allocate.initialized? # false
puts DemoClass.new.initialized? # true
第一个打印出来的是 false
第二个打印出来的是 true
allocate 和 new 的区别是:
allocate 不会调用 initialize 方法并返回 Class 一个实例对象
new 会调用 initialize 方法并返回 Class 的一个实例对象