11
初始化方法(构造函数)私人或公共的红宝石?Ruby类初始化(构造函数)是私有方法还是公有方法?
初始化方法(构造函数)私人或公共的红宝石?Ruby类初始化(构造函数)是私有方法还是公有方法?
让我们来看看:
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
误用这样的构造但是可能会导致问题,如果它比简单变量初始化。
类中的initialize
方法自动变为Private。
可以使用一下:
puts ClassName.private_methods.sort
您也可以拨打'initialize'通过'obj.send对象(:初始化)'。 – 2012-01-06 15:15:59
@undur_gongor:是的,这适用于任何私人方法。 – 2012-01-06 15:17:20