PTT
Submit
Submit
選擇語言
正體中文
简体中文
PTT
Ruby
Re: [問題] method可以被使用的原因
作者:
danny8376
(釣到一隻猴子@_@)
2016-03-26 16:26:39
※ 引述《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
作者:
rer429
(phoenix)
2016-03-26 16:58:00
感謝大大!!清楚又精闢
作者:
mars90226
(火星人)
2016-03-27 01:46:00
http://goo.gl/ExK018
隨意找的Ruby Class架構圖這邊都還算還好,等到原原PO遇到eigenclass的時候...XD
作者:
danny8376
(釣到一隻猴子@_@)
2016-03-27 02:56:00
eigenclass嗎wwwwwww 超自動化class處理機制wwww
繼續閱讀
[問題] method可以被使用的原因
rer429
Re: [問題] Tealeaf (launchschool)
rer429
Re: [問題] Tealeaf (launchschool)
Beersheep
[RoR ] Heroku Rails Memory Leak
GSMMZ
Re: [問題] Tealeaf (launchschool)
lTERRAl
[問題] Tealeaf (launchschool)
rer429
[閒聊] 小弟去申請版主了,大家有空去連署吧
Neisseria
Re: [問題] Nokogiri xmlns問題
johnlinvc
[問題] Nokogiri xmlns問題
biboga
[心得] 今天是 ruby 的生日
KBchen
Links
booklink
Contact Us: admin [ a t ] ucptt.com