保存单例对象
让我们看一下前面提到的问题的一个具体示例 - 即,无法使用编排(marshaling)来保存和加载单例对象(singleton)。在 singleton_m.rb 中,我创建了一个 Object 的实例 ob
,然后以单例类的形式扩展它,附加了方法 xxx
:
singleton_m.rb
ob = Object.new
class << ob
def xxx( aStr )
@x = aStr
end
end
当我尝试使用 Marshal.dump
将此数据保存到磁盘时会抛出该问题。Ruby 显示一条错误消息,指出:“单例对象不能被转储(类型错误,TypeError)”。