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

Links booklink

Contact Us: admin [ a t ] ucptt.com