保存单例对象

让我们看一下前面提到的问题的一个具体示例 - 即,无法使用编排(marshaling)来保存和加载单例对象(singleton)。在 singleton_m.rb 中,我创建了一个 Object 的实例 ob,然后以单例类的形式扩展它,附加了方法 xxx

singleton_m.rb
  1. ob = Object.new
  2. class << ob
  3. def xxx( aStr )
  4. @x = aStr
  5. end
  6. end

当我尝试使用 Marshal.dump 将此数据保存到磁盘时会抛出该问题。Ruby 显示一条错误消息,指出:“单例对象不能被转储(类型错误,TypeError)”。