2012-01-06 70 views

回答

16

让我们来看看:

class Test 
    def initialize; end 
end 

p Test.new.private_methods.sort.include?(:initialize) 

这将打印true,所以initialize是一个私有方法。这是有道理的,只有在创建对象时才会调用new类方法。如果我们愿意,我们可以做这样的事情:

class Test 
    def initialize 
    @counter = 0 
    end 

    def reset! 
    initialize 
    end 
end 

误用这样的构造但是可能会导致问题,如果它比简单变量初始化。

+6

您也可以拨打'initialize'通过'obj.send对象(:初始化)'。 – 2012-01-06 15:15:59

+1

@undur_gongor:是的,这适用于任何私人方法。 – 2012-01-06 15:17:20

4

类中的initialize方法自动变为Private。

可以使用一下:

puts ClassName.private_methods.sort 
相关问题