Ruby 编程中的对象属性、方法委托与类型转换
1. 定义虚拟属性
在 Ruby 中定义类时,我们可以借助 Module#attr_writer 或 Module#attr_accessor 方法为实例变量自动生成 setter 方法。例如:
class SimpleContainer
attr_accessor :value
end
c = SimpleContainer.new
c.respond_to? "value=" # => true
c.value = 10; c.value # => 10
c.value = "some random value"; c.value # => "some random value"
c.value = [nil, nil, nil]; c.value # => [nil, nil, nil]
不过,默认的 setter 方法会允许将实例变量设置为任意值。有时候,我们可能不信任通过 setter 方法传入的数据,这时就可以自定义方法来阻止不良数据进入对象。
在类内部,我们可以直接访问实例变量,直接赋值不会触发 setter 方法。若要触发 setter 方法,则需显式调用。
当我们想要为并非直接由实例变量支持的属性创建访问器方法时,也就是创建一个基于一个或多个不同实
超级会员免费看
订阅专栏 解锁全文
7

被折叠的 条评论
为什么被折叠?



