什么是一个存取器? 我们在前面已经讨论过实变量了,但却未过多的讨论.一个对象的实变量属于它的属性,也是它与其它来自同一个类的对象的一般区别.读写它的属性是重要的;这样做需要做一个叫着属性存取器(attribute accessors)的方法.我们将很快看到我们并不是总要明确地写出存取器方法,但现在先让我们了解所有的细节.存取器的两种类型是写(writer)和读(reader). ruby> class Fruit | def set_kind(k) # a writer
前面一节的 Fruit 类有两个实变量,分别表述水果的类型和状态.直到为这个类写了一个定制的inspect方法,我们方才了解它不会对一个缺乏属性的水果做出合理的解释.幸运的是,Ruby提供了一种允许实变量总是被初始化的方法. initalize方法 当Ruby创建一个新对象时,它总是会寻找一个名为 initialize 的方法并执行它.因此,我们可以简单通过一个initialize方法向实变量中加入缺省值,这样一来, inspect方法就有东西可说了. ruby> class Fruit
闭包(Closure),是指未绑定到任何对象的自由代码,闭包中的代码与任何对象和全局变量无关,只与执行此段代码的上下文相关。
今天我们简要的看一下ruby中的闭包实现。
Ruby中的闭包实现有:Block,Proc,Lambada。
首先,我们来看Block。
代码如下:
ary = [1,2,3,4]
ary.collect! do |a|
a*a
end
ary.each do |a|
puts a
end
这段代码,我们使用了Array对象的block方法