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