Ruby 中 Class 的 allocate 和 new 方法是什么?

363 阅读1分钟

Ruby 中 Class 和 Module 的区别是 Class 多了 newallocatesuperclass这三个方法,那么 allocatenew 分别是什么?

看下面的例子:

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

allocatenew 的区别是:

allocate 不会调用 initialize 方法并返回 Class 一个实例对象

new 会调用 initialize 方法并返回 Class 的一个实例对象