紅寶石Module
有一個方法instance_methods
可以返回該類的方法列表。但是如何檢索一個類的類方法列表?如何獲取類方法?
如何獲取類方法?
回答
class Song
def self.hello;end
end
p Song.singleton_methods
結果:
[:hello]
您可以將false
參數傳遞到Object#methods。
class Foo
def self.bar
end
end
Foo.methods(false) #=> [:bar]
將** s **添加到Object#方法及其鏈接。 –
好了,如果你有這樣的:
object = Object.new
,你想要得到的Object
(的object
父)類方法列表,你可以得到通過:
object.class.methods
而且如果您有一些課程,比如說Samuel
,您可以通過Samuel.methods
輕鬆獲得課程方法。您可以這樣做,因爲Samuel
是類類的實例,因此您可以像從普通對象那樣獲取其方法。
你需要知道的第一件事是,有沒有這樣的事情在Ruby中一個類的方法。我們口語上稱之爲「類方法」實際上只不過是一種正常的單例方法。 全部對象可以有單獨的方法,沒有什麼特別的類。
實際上,沒有任何東西作爲單獨的方法!我們口語上稱之爲「單例方法」的東西實際上只是對象單例類的常規無聊實例方法。
所以,既然你已經知道如何列出的實例方法,你現在知道了類方法實際上是實例方法,你已經知道如何回答你自己的問題:
class Foo; def self.bar; end end
class << Foo
instance_methods(false)
end
# => [:bar]
Foo.singleton_class.instance_methods(false)
# => [:bar]
然而,即使單方法實際上並不存在,它仍然是有用的談論他們,上述結構是只是足夠的不便,有其執行上述的實際上相當於專門的方法:
Foo.singleton_methods(false)
# => [:bar]
當使用singleton_methods,似乎false參數是沒有必要的。 – uncutstone
- 1. 如何獲取方法的類綁定?
- 2. 如何獲取類的構造方法?
- 3. 如何從類型獲取TryParse方法?
- 4. Java - 如何獲取類調用方法
- 5. 如何獲取調用靜態方法的類和方法?
- 6. 方法獲取類GregorianCalendar?
- 7. PHP獲取子類方法
- 8. 如何獲取findElementById方法?
- 9. 如何獲取泛型方法參數的類型參數類?
- 10. 如何從Java中的超類方法獲取子類值?
- 11. 如何從一個子類的靜態方法獲取類?
- 12. 如何獲取類在.NET中輸入基類靜態方法?
- 13. 無法通過類方法獲取csv
- 14. 如何從方法內部獲取JavaScript類/實例方法的名稱?
- 15. 如何在類中獲取方法的地址?
- 16. 如何從類中獲取方法的代碼
- 17. 如何在測試設置方法中獲取測試類別
- 18. 如何在C++中獲取返回類型的重載方法?
- 19. 如何從groovy獲取testStep的HTTP/REST方法類型
- 20. 如何獲取子類的所有方法?
- 21. 如何從靜態子方法獲取類名稱
- 22. 如何從AsyncTask類方法向MainActivity獲取字符串?
- 23. 如何獲取方法中的聲明類?
- 24. 如何從Python中的靜態方法獲取(子)類名?
- 25. PHP:如何從靜態方法獲取類成員變量?
- 26. 如何獲取此方法的調用者類
- 27. 如何從方法體獲取定義類?
- 28. 如何獲取類中的方法代碼
- 29. ActiveRecord :: Relation上的類方法調用如何獲取上下文?
- 30. 如何從繼承的方法獲取派生類的路徑?
你W¯¯螞蟻*類的方法*被** **僅在該特定的類中定義** **未了繼承(/含),是嗎? –