看板 Ruby 關於我們 聯絡資訊
※ 引述《rer429 (phoenix)》之銘言: : 想請問一個很基本的問題,關於「method」為什麼可以使用。 : 我的理解中有三個可能: : 1.這個class被創造的時候,本身就有定義這個method : 2.他是另一個class的subclass,繼承了superclass的method : 3. include了一個module,可以使用module的method : 但當我在看ruby2.2.3文件的時候,發現ancestors這個method只有被定義在module中 : http://imgur.com/UGBKdQb : 我的理解是:只有在繼承了module這個class的class可以用這個method,但.... : 但我卻可以使用在Symbol、Enumerable等「class」上 : http://imgur.com/kF9aauw : 這有點超乎我的理解 QQ : 希望能聽到各位大大的見解 : 謝謝 這邊就要述說一下ruby的物件結構啦 (注意大小寫意義不同 吧?) 首先 我們知道所有的class都是Class這個class的instance 所以不管是Fixnum, Module, Class, Object, Foo, Bar, ... 只要是class都是Class的instance 所以就來探究一下吧 Class.superclass => Module 所以說Class本身繼承了Module 自然任何class本身都會有Module這class內定義的方法 而Symbol Enumerable本身都是Class的instance 所以自然也能使用他的instance method 以上(不知道能不能理解XD 以下繼續離奇(? Module.class => Class 顯然Module本身也是個Class的instance 所以他自己是他子類別的一個instance是吧XDDDDD -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 114.32.142.161 ※ 文章網址: https://www.ptt.cc/bbs/Ruby/M.1458980803.A.E2C.html ※ 編輯: danny8376 (114.32.142.161), 03/26/2016 16:31:42
rer429: 感謝大大!!清楚又精闢 03/26 16:58
mars90226: http://goo.gl/ExK018 隨意找的Ruby Class架構圖 03/27 01:46
mars90226: 這邊都還算還好,等到原原PO遇到eigenclass的時候...XD 03/27 01:47
danny8376: eigenclass嗎wwwwwww 超自動化class處理機制wwww 03/27 02:56