如果我有這在我的主程序:默認情況下,所有方法都是公開的嗎?
def hi
puts 'hi'
end
self.hi
它不會工作,因爲hi
是私人的。
我已經瞭解到,Ruby中的所有方法默認都是公共的,但這似乎並不是這種情況,爲什麼?
如果我有這在我的主程序:默認情況下,所有方法都是公開的嗎?
def hi
puts 'hi'
end
self.hi
它不會工作,因爲hi
是私人的。
我已經瞭解到,Ruby中的所有方法默認都是公共的,但這似乎並不是這種情況,爲什麼?
在main
環境中定義方法是很棘手的。當您在main
中定義它時,默認情況下私有方法。所以,你要麼必須使用它作爲私人:
def hi
puts 'hi'
end
hi
或明確地把它公開:
def hi
puts 'hi'
end
public :hi
self.hi
很棒的回答。這樣做有沒有好處? – David
def main_method
p "This is from main_method"
end
public :main_method
class Klass
def initialize
Object.main_method # Or we can simply say main_method as we do in the second exaple
end
end
puts Klass.new
這是如圖所示創建對象「類的方法」的方式。如果它是私人的,那麼我們不能指定接收者。
當它是私有的,因爲它是在默認情況下,那麼我們就這樣稱呼它:
def main_method
p "This is from main_method"
end
class Klass
def initialize
main_method # With it being private, implicit self only
end
end
puts Klass.new
那麼,有沒有優勢無論哪種方式?我想如果你把它變成私人的,你會向開發者發送一些你有偏好的信息,這應該用作私人方法,而不是公共方法。
實際上,我沒有看到優勢。
方法默認爲公開,,但「頂級程序」爲。如果你定義了一個看起來像頂級程序,它將實際上被定義爲private
實例方法Object
。
你爲什麼加上自我。 ? –