美文网首页
《Ruby 元编程》读书笔记五:类定义

《Ruby 元编程》读书笔记五:类定义

作者: 榆树下的小豆芽儿 | 来源:发表于2018-06-24 21:40 被阅读0次

类定义

        定义类或模块时,其自身充当了当前对象self的角色。类和模块也是对象,与方法和块相同,类定义也会返回最后一条语句的值。

当前类

        尽管self可以获得当前对象,但并不能获得当前类,每当通过class关键字打开一个类时,这个类就成为当前类。

class_eval方法

        class_eval方法像class方法一样重新打开了该类,class关键字会打开一个新的作用域,这将丧失当前绑定的可见性,而 class_eval方法则使用扁平作用域,这意味着可以使用外部作用域中的变量。 class_eval还有个孪生方法 class_exec,它可以接受额外的代码块作为参数。

类实例变量

        类的实例变量不同于对象的实例变量。上述代码中一个@my_var变量定义于obj充当self的时刻,它是obj对象的实例变量。另外一个@my_var变量定义于MyClass充当self的时刻,因此它是MyClass的实例变量,也就是类实例变量

类变量

        以@@开头的变量。类变量与类实例变量不同,它可以被子类或者类的实例所使用。

单件方法        

        仅仅针对str添加的title?方法,其他对象没有这个方法。只对单个对象生效的方法称为单件方法

类方法

        类的单件方法。

类宏

        Ruby对象没有属性。如果你希望有一些像属性的东西,就得定义两个拟态方法:读方法和写方法。        

        这样的写法很容易让人感到枯燥。可以用Module#attr_reader方法生成读方法,用Module#attr_writer方法生成写方法,而Module#attr_accessor可以同时生成两者。像attr_accessor这样的方法称为类宏

_单件类

        p118 ~ p131

方法包装器

方法别名

        使用alias关键字可以给ruby方法取一个别名。可以使用符号(例如:m)表示这些名字,也可以使用普通字符串。例如,String#size就是String#length方法的别名;Integer类有一个方法至少有5个不同的名字(大佬告诉告诉我~~)。

        但是,如果给一个方法定义别名,又重新定义它。

        别名方法引用的还是原始方法。这说明重新定义方法并不是修改这个方法。所以只要老方法还存在一个绑定的别名,仍然可以使用老方法。

1+1=3

相关文章

  • 《Ruby 元编程》读书笔记五:类定义

    类定义 定义类或模块时,其自身充当了当前对象self的角色。类和模块也是对象,与方法和块相同,类定义也会返...

  • Ruby元编程笔记 - 类中的魔法

    Ruby元编程笔记 - 类定义 类定义揭秘 在类定义中,self就是正在定义的类。 所有使用def定义的方法都成了...

  • Ruby元编程笔记——4.类定义

    类定义揭秘 当前类小结 在类定义中,当前对象self就是正在定义的类。 Ruby解释器总是追踪当前类(模块)的引用...

  • Ruby元编程(蛋人)

    01 Ruby元编程介绍和使用场景02 Ruby的类结构03 Singleton Method单例方法以及supe...

  • 元编程:类定义

    1.类定义和当前类 2.类实例变量 3.类变量 4.使用Class定义类 5.单件方法 6.类宏 7.单件类 8....

  • 元编程-类定义

    类定义 注意: 类也是对象 当前类 在程序顶层,当前类为main对象的类 Object class 打开一个类时(...

  • From Objective-C to Ruby(4)-类和模块

    类 定义类 OC: ruby: 初始化方法 OC: ruby: 实例变量和属性 OC: ruby: 类方法和对象方...

  • Ruby元编程

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

  • ruby元编程

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

  • 《Ruby 元编程》读书笔记一:类和对象

    打开类 定义:可以重新打开已经存在的类并对之进行动态修改,即使像String或者Array这样标准库的类也不例外。...

网友评论

      本文标题:《Ruby 元编程》读书笔记五:类定义

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