11

ruby 中的初始化方法(构造函数)是私有的还是公共的?

4

2 回答 2

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

然而,如果构造函数不仅仅是简单的变量初始化,那么像这样滥用构造函数可能会导致问题。

于 2012-01-06T15:08:17.013 回答
4

类中的initialize方法自动变为私有。

您可以使用以下方法检查它:

puts ClassName.private_methods.sort
于 2014-06-24T13:06:51.000 回答