Re: [問題] method可以被使用的原因
※ 引述《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
03/27 01:46, 2F
→
03/27 01:47, , 3F
03/27 01:47, 3F
→
03/27 02:56, , 4F
03/27 02:56, 4F
討論串 (同標題文章)
本文引述了以下文章的的內容:
完整討論串 (本文為第 2 之 2 篇):
Ruby 近期熱門文章
PTT數位生活區 即時熱門文章