本文已参与「新人创作礼」活动,一起开启掘金创作之路。
关于方法调用的一些补充
把数组分解为参数
将参数传递给方法时,可以先分解数组,然后再将分解后的数组元素作为参数传递给方法。在调用方法时,如果以“* 数组”这样的形式指定参数,这时传递给方法的就不是数组本身,而是数组的各元素被依次传递给方法。但需要注意的是,数组的元素个数必须要和方法定义的参数个数一样。
把散列作为参数传递
可以用{~} 这样的形式来表示散列。将散列作为参数传递给方法时可以省略{}。
把符号作为键的散列传递给方法
与使用关键字参数调用方法的形式一模一样。其实,关键字参数就是模仿这种将散列作为参数传递的写法而设计出来的。使用关键字参数定义方法,既可以对键进行限制,又可以定义参数的默认值。
类
类的继承作用
在不影响原有功能的前提下追加新功能
重定义原有功能,使名称相同的方法产生不同的效果
在已有功能的基础上追加处理,扩展已有功能
类的继承关系图
子类与父类的关系被称为“is-a关系”,例如,String 类与它的父类Object 就是is-a关系。 查找对象所属的类时使用instance_of? 方法,而根据类的继承关系反向追查对象是否属于某个类时,则可以使用is_a? 方法。
存取器
在Ruby中,从对象外部不能直接访问实例变量或对实例变量赋值,需要通过方法来访问对象的内部。
当对象有多个实例变量时,如果逐个定义存取器,就会使程序变得难懂,而且也容易写错。为此,Ruby为我们提供了更简便的定义方法attr_reader(只读) 、attr_writer(只写) 、attr_accessor(读写) 。只要指定实例变量名的符号,Ruby就会自动帮我们定义相应的存取器。