這裏是隨機問題。我不確定這是否有一個術語,但是我想知道當你定義一個沒有明確接收方的方法時,你怎麼知道什麼類可以得到這個方法?是不是self
就是在這種情況下?Ruby沒有明確的接收者時,什麼類可以獲得方法?
self
在類定義的上下文中是被定義的類,並且用隱式接收器定義的方法被綁定到我們隨時可以看到的類。
但是,如果我限定實例方法中的一個方法,即「sub_method」是越來越放在外部類,以及:
[12] pry(main)> class A
[12] pry(main)* def my_method
[12] pry(main)* puts self
[12] pry(main)* def sub_method
[12] pry(main)* puts self
[12] pry(main)* end
[12] pry(main)* end
[12] pry(main)* end
=> :my_method
[13] pry(main)> a = A.new
=> #<A:0x007fa588181d40>
[14] pry(main)> a.my_method
#<A:0x007fa588181d40>
=> :sub_method
[15] pry(main)> a.sub_method
#<A:0x007fa588181d40>
=> nil
[16] pry(main)> A.instance_methods(false)
=> [:my_method, :sub_method]
而且在頂層範圍,self
是main
,這是在Object
類的實例,但方法來定義有被添加到Object
,不main
小號單例類,這是我的基礎上如何我見過的其他特殊方法期待什麼工作:
這裏發生了什麼事,對此有規定,還是隻有這幾個案例才能知道?
在你開始搜索它之前:那篇博客文章的作者提到的關於第三個隱式上下文的文章,從來沒有寫過,遺憾的是。 –
對於那些不瞭解她的人:Yugui是Ruby 1.9的發佈經理,她負責我們熟悉的Ruby設計,開發,維護和發佈過程中的許多改進。有時會忘記Ruby 1.8的糟糕的舊日子。 –