在ruby中初始化方法(构造函数)是私有的还是公共的?
答案 0 :(得分: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
如果它不仅仅是简单的变量初始化,那么滥用这样的构造函数可能会导致问题。
答案 1 :(得分:4)
类中的initialize
方法自动变为私有。
您可以使用以下方式进行检查:
puts ClassName.private_methods.sort