“Ruby元编程技术”的版本间的差异

来自Dennis的知识库
跳转到: 导航搜索
Open Class
Open Class
第15行: 第15行:
 
         end
 
         end
 
     end
 
     end
 +
 +
== 对象模型 ==
 +
 +
* 对象由一组实例变量和一个类的引用组成。
 +
* 对象的方法存在与对象所属的类中(从类的的角度来看,它们叫做实例方法)
 +
* 类本身是Class类的对象。类的名字不过是一个常量而已
 +
* Class类是Module的子类。一个模块基本上是由一组方法组成的包。类除了具有模版的特性之外,还可以被实例化(通过new方法)以及本组织为层次结构(通过superClass方法)
 +
* 常量像文件系统一样,是按照树形结构组织的。其中模块和类的名字扮演目录的角色,其他普通的常量则扮演文件的角色
 +
* 每个类都有一个祖先链,这个链从自己所属的类开始,向上直到BasicObject类结束
 +
* 当调用一个方法时,Ruby首先向右一步来到接受者所属的类,然后一直向上查找祖先链,直到找到该方法,或者到达链的顶端为止
 +
* 每当一个类包含一个模块时,该模块会被插入在祖先链中,位置在该类的正上方
 +
* 当调用一个方法时,接收者会扮演self的角色
 +
* 当定义一个模块时(或者类)时,该模块扮演self的角色
 +
* 实例变量永远被认定为self的实例变量
 +
* 任何没有明确指定接收者的方法调用,都当成调用self方法

2013年1月27日 (日) 10:25的版本

目录

声明

  • 本Wiki上的任何文字信息均在GNU自由文档许可证1.3或更高版本下发布,如果用于任何商业用途都需经本人同意。任何转载都请注明出处。
  • 本Wiki上的内容来自本人的学习笔记,来源可能包括原创、书籍、网页、链接等,如果侵犯了您的知识产权,请与本人联系,我将及时删除。
  • 我的联系方式 killme2008@gmail.com

简介

读《Ruby元编程》的笔记

Open Class

class更像是作用域操作符,而不仅是类型声明语句。随时可以打开一个class定义或者覆写方法:

   #为String添加新方法
   class String
       def to_alphanumeric
            self.gsub /^[\w\s]/, ""
       end
   end

对象模型

  • 对象由一组实例变量和一个类的引用组成。
  • 对象的方法存在与对象所属的类中(从类的的角度来看,它们叫做实例方法)
  • 类本身是Class类的对象。类的名字不过是一个常量而已
  • Class类是Module的子类。一个模块基本上是由一组方法组成的包。类除了具有模版的特性之外,还可以被实例化(通过new方法)以及本组织为层次结构(通过superClass方法)
  • 常量像文件系统一样,是按照树形结构组织的。其中模块和类的名字扮演目录的角色,其他普通的常量则扮演文件的角色
  • 每个类都有一个祖先链,这个链从自己所属的类开始,向上直到BasicObject类结束
  • 当调用一个方法时,Ruby首先向右一步来到接受者所属的类,然后一直向上查找祖先链,直到找到该方法,或者到达链的顶端为止
  • 每当一个类包含一个模块时,该模块会被插入在祖先链中,位置在该类的正上方
  • 当调用一个方法时,接收者会扮演self的角色
  • 当定义一个模块时(或者类)时,该模块扮演self的角色
  • 实例变量永远被认定为self的实例变量
  • 任何没有明确指定接收者的方法调用,都当成调用self方法
个人工具
名字空间

变换
操作
导航
工具箱