美文网首页
Ruby元编程笔记 - 对象模型

Ruby元编程笔记 - 对象模型

作者: Kumiko | 来源:发表于2015-07-15 14:15 被阅读84次
Tips
  • 类名不过是常量
  • 对象包含了实例变量,它就好像一个Hash表一样。
  • 方法存放在类之中。
类自身也是对象
"hello".class #=> String
String.class  #=> Class
Class.class  #=> Class

String.ancestors
  #=> [String, Comparable, Object, Kernel, BasicObject]
Object.superclass
  #=> BasicObject

Class.ancestors
  #=> [Class, Module, Object, Kernel, BasicObject]

  • 所有的类都是Class的子类,而Class继承自Module。所以类只是比模块多了superclass(), new(), allocate()这三个方法。

  • Kernel只是mixin在BasicObject里的一个模块,它能出现在ancestors中,但并不代表Object继承自Kernel。因为这个祖先链的关系,所以所有对象都能调用Kernel里的方法。

self

顶级上下文:

self        #=> main
slef.class  #=> Object

当开始运行ruby程序的时候,解释器会创建一个名为main的对象最为当前对象,它被称为顶级上下文(top level context)是因为这时处在调用堆栈的顶层:这时要么还没有调用任何方法,要么调用的方法都已经返回了。P.S. Ruby的main对象和C系的main函数没有关系。

private
  1. 如果调用方法的接收者不是自己,则必须指明一个接收者;
  2. 私有方法只能被隐含接收者调用;

所以,不能明确指定一个接收者调用一个私有方法,即每次调用私有方法只能用隐含的接收者self调用。

所以与C系语言不同的是,子类可以调用基类的私有方法。

相关文章

  • Ruby元编程笔记 - 对象模型

    Tips 类名不过是常量 对象包含了实例变量,它就好像一个Hash表一样。 方法存放在类之中。 类自身也是对象 所...

  • Ruby元编程笔记——1.对象模型

    打开类 在Ruby中,定义类的语句和其他语句没有本质区别,你可以在类定义中放置任何语句。 Ruby的class关键...

  • Ruby 对象模型的复习

    最近复习了下 ruby 对象模型的知识,参照了 Ruby Metaprogramming,于是边看边做笔记,还是收...

  • 2016-11-05 task-list

    今日任务 ruby on rails 第6章 ruby 元编程 第3章 总结 数据库迁移生成User模型 注意:控...

  • 元编程:对象模型

    第一章节的内容是对象模型,相对来说比较简单,本篇文章先直接总结知识点,其实以后再回过头来看本篇文章的时候直接看知识...

  • Ruby元编程笔记 - 方法

    Dynamic Method 通过send()去动态调用方法: 在Ruby2.2.2中,send()依然可以调用私...

  • Ruby元编程笔记 - Block

    Block不是对象,应通将其转为proc进行传递。 作用域门 Scope Gate 作用域门一共有三个:modul...

  • Ruby 对象模型

    对象模型 面试被问了几次 Ruby 的对象模型,也有被要求画出来对象模型图,查找资料后,手动画了几遍。关键词可以搜...

  • Ruby元编程

    类 方法 代码块 类宏 Eval方法 实例变量、方法、类 实例变量(Instance Variables)是当你使...

  • ruby元编程

    对象模型 所有class定义之外的代码默认运行在顶级对象main中。 打开类 ruby的class更像是一个作用于...

网友评论

      本文标题:Ruby元编程笔记 - 对象模型

      本文链接:https://www.haomeiwen.com/subject/aiqyqttx.html