Ruby 元编程与对象模型深入解析
1. 单例类与类级访问器
在 Ruby 中,单例类的表示符号为 #<Class:#<String:...>> 。Ruby 会限制在原对象上下文之外使用单例类,例如不能创建单例类的新实例:
singleton = class << "cat"; self; end
singleton.new
上述代码会产生 TypeError 错误,提示不能创建单例类的实例。
我们可以编写类级访问器方法来获取和设置类对象中定义的实例变量的值。Ruby 自带的 attr_accessor 通常用于定义实例的 getter 和 setter 方法,若要使其处理类级实例变量,需在单例类中调用它:
class Test
@var = 99
class << self
attr_accessor :var
end
end
puts "Original value = #{Test.var}"
Test.var = "cat"
puts "New value = #{Test.var}"
运行结果:
Original value = 99
New value = cat
2. 继承与可见性
在类定义中,可以更改祖先类
超级会员免费看
订阅专栏 解锁全文
7635

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



