我正在使用Zed Shaw的Learn Ruby The Hard Way,我在IRB中遇到了一個包含模塊的問題。在exercise 25中,我們定義了一個新的模塊Ex25,在IRB中需要它,然後可以通過該模塊的命名空間使用其各種方法,例如, Ex25.break_words(sentence)
。在Extra Credit中,聲明鍵入include Ex25
將基本上將模塊中的方法添加到當前「空間」(不知道該調用它的內容),然後可以在不明確指向模塊的情況下調用它們。 break_words(sentence)
。但是,當我這樣做時,我得到一個「未定義的方法」錯誤。任何幫助/解釋將不勝感激,謝謝!Ruby在IRB中包含模塊
2
A
回答
5
這是本書中的錯誤。 Ex25
中的方法是類方法。 include
將實例方法添加到「當前空間」。從方法定義刪除self
,它會工作:
module Ex25
def break_words(stuff)
stuff.split(' ')
end
end
include Ex25
break_words 'hi there' # => ["hi", "there"]
如果你很好奇,這裏是什麼回事一些細節:其中的方法包括—「當前空間」的地方—是Object類:
Object.included_modules # => [Ex25, Kernel]
所有對象實例獲得包括方法...
Object.new.break_words 'how are you?' # => ["how", "are", "you?"]
...和頂級只是一個對象實例:
self.class # => Object
但是等等。如果頂層是Object實例,爲什麼它會響應include
? include
是否爲Module
(及其子類,Class
)的實例方法?答案是頂層有一個單獨的方法...
singleton_methods.include? "include" # => true
......我們可以假設它轉發到Object類。
+0
這工作完美,真的很有啓發性。非常感謝! – orenyk
相關問題
- 1. 在Ruby中包含模塊
- 2. Ruby模塊包含問題
- 3. 包含類的Ruby模塊
- 4. 是否可以在Ruby的其他模塊中包含模塊?
- 5. 將模塊包含到方法ruby中
- 6. Ruby 2.0如何在包含模塊後從模塊中取出模塊?
- 7. 在模塊內部包含外部Ruby模塊?
- 8. 在模塊中包含模塊
- 9. Ruby:包含動態模塊名稱
- 10. Ruby模塊包含和類變量
- 11. 在verilog中包含模塊
- 12. 模塊何時包含在運行在rails中的Ruby類中?
- 13. 在Ruby中,我如何反思模塊中包含的類?
- 14. requirejs模塊包含模塊
- 15. 爲什麼Ruby模塊包含排除模塊的單例類?
- 16. 如何在Ruby模塊中包含單元測試?
- 17. 將模塊包含在類中(Ruby Mixins):有什麼更好的?
- 18. 如何在Ruby中封裝包含的模塊方法?
- 19. 在Ruby中包含與擴展和可比較模塊
- 20. 在Ruby 1.9.2的目錄中包含所有模塊
- 21. 如何在常規Ruby類中包含Rails ApplicationHelper模塊
- 22. 請勿在irb中加載readline模塊
- 23. 中包含的模塊
- 24. 閉包在Ruby中與模塊
- 25. 被困在Ruby的IRB中
- 26. Ruby:模塊擴展/包括模塊
- 27. ruby NameError包含屬於另一個模塊的類中的Singleton模塊
- 28. 如何通過包含模塊來包裝調用Ruby方法?
- 29. 在ocaml中包含模塊中的所有模塊
- 30. 如何訪問包含的ruby模塊中的類變量?
向我們展示一些代碼。 –
...包括什麼呼叫包含退貨,如果有的話。 –