Getting started with Ruby-3

博客分类: 技术 阅读次数: comments

Getting started with Ruby-3

元编程

Builder

ActiveRecord

开放类

在某个类名上首次调用class会定义一个类;但如果该类已经定义过,再调用class会修改先前的类的定义,比如添加方法。因为有随时重定义任何类或对象的自由,所以称为开放类。这种写法让代码实现简单易懂。

blank.rb

% ruby blank.rb
person

这样,不论是nil还是"",因为两个类都具有blank?方法,就可以用相同的方式判断是否空字符串(鸭子类型)。

units.rb把各种单位转成英寸:

% ruby units.rb
24
24
24
-633600

使用method_missing

调用的方法找不到时,Ruby会调用method_missing方法。通过覆盖这个方法,可以把输入的方法名称作为参数,实现特殊的功能。但这时需要另外处理未知的方法名称,保证严格的错误检查。

roman.rb

10
90
12
NoMethodError

模块

比如要读取一个 csv 表格:

直接用类实现

acts_as_csv_class.rb

实现

通过宏中的方法调用define_method添加这组方法:

acts_as_csv.rb

用模块实现:

acts_as_csv_module.rb

类是可以被实例化的模块。

第三天自习

acts_as_csv_module_csvrow.rb

打印指定元素。