大家好!我想知道如何在Ruby中使用語法ClassName.method_name
不能調用的方法。我的頭頂有些是puts
,print
,gets
, chomp
。這些方法可以在不使用點運算符的情況下調用。爲什麼是這樣?他們來自哪裏?我怎麼能看到這些方法的完整列表?沒有類的Ruby方法?
回答
Kernel
中的所有方法將適用於所有類Object
或Object
派生的任何類。您可以使用Kernel.instance_methods
來列出它們。
他們來自Kernel
模塊,每個類自動包含模塊。那些
irb(main):001:0> class Foo
irb(main):002:1> end
=> nil
irb(main):003:0> Foo.included_modules
=> [Kernel]
較短:'Class.new.included_modules'。 :-) – 2011-06-06 22:04:04
@chris:絕對:) – xinit 2011-06-06 22:05:07
對不起,但「自動包含」可能會誤導,並且不太正確......誤導,因爲聽起來像是包含'Kernel'的操作是由Ruby完成的,但它只是簡單的因爲新類有'Object'作爲祖先,'Object'包含'Kernel'。在'Object'中包含任何其他模塊,您將獲得相同的效果; 'Kernel'沒有什麼特別之處。這是不正確的,因爲從'BasicObject'分類的類不會包含'Kernel'。 – 2011-06-06 23:22:58
- 1. 有沒有Ruby dealloc方法?
- 2. Ruby的私有類方法
- 3. Ruby:有沒有方法attr_initialize的gem?
- 4. Ruby gsub:有沒有更好的方法
- 5. 在Elixir中有沒有類似ruby的send方法?
- 6. Ruby - 類方法
- 7. 有沒有辦法從Ruby中的實例調用私有的類方法?
- 8. Ruby on Rails的沒有方法錯誤
- 9. Ruby:沒有塊返回的方法
- 10. Ruby:沒有多態的當前類的調用方法
- 11. 在Ruby中創建一個沒有實例方法的類
- 12. Ruby on Rails:有沒有類似於子類的C++虛擬方法?
- 13. 在Ruby中,有沒有辦法找到響應方法調用的類?
- 14. Ruby On Rails Model沒有方法
- 15. 爲什麼Ruby沒有is_an?方法?
- 16. Ruby中沒有方法錯誤
- 17. Ruby:沒有類的'new'
- 18. ruby中的方法類
- 19. Ruby中的類方法
- 20. Ruby中的類方法
- 21. 如何使用方法但沒有類來執行ruby腳本?
- 22. pywinauto:AttributeError:WindowSpecification類沒有'GetProperties'方法
- 23. AttributeError:WindowSpecification類沒有'typekeys'方法
- 24. 類方法沒有找到
- 25. LocationListener類沒有onLocationChanged()方法?
- 26. 從Ruby的類方法調用私有實例方法
- 27. 有沒有更好的方法來測試這個RSpec的Ruby類?
- 28. 有沒有一種好的方法來測試Ruby中的父類?
- 29. Ruby私有方法
- 30. 如何在Ruby中使用類似於Array()的方法(沒有點語法)?
非常感謝你:) – Kvass 2011-06-06 22:25:37
不完全正確,因爲他們將可用於其類的子類'Obejct'的對象。基於'BasicObject'的類的實例不會有'Kernel'方法。 – 2011-06-06 23:25:49
@ Marc-André:謝謝!糾正。 – 2011-06-06 23:33:36