Re: [問題] method可以被使用的原因

看板Ruby作者 (釣到一隻猴子@_@)時間8年前 (2016/03/26 16:26), 8年前編輯推噓2(202)
留言4則, 3人參與, 最新討論串2/2 (看更多)
※ 引述《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

03/26 16:58, , 1F
感謝大大!!清楚又精闢
03/26 16:58, 1F

03/27 01:46, , 2F
http://goo.gl/ExK018 隨意找的Ruby Class架構圖
03/27 01:46, 2F

03/27 01:47, , 3F
這邊都還算還好,等到原原PO遇到eigenclass的時候...XD
03/27 01:47, 3F

03/27 02:56, , 4F
eigenclass嗎wwwwwww 超自動化class處理機制wwww
03/27 02:56, 4F
文章代碼(AID): #1MzaV3ui (Ruby)
討論串 (同標題文章)
文章代碼(AID): #1MzaV3ui (Ruby)