想象一下,我有这个类,我想用YAML序列化它的对象:
class Thing
attr_reader :var, :some_proc
def initialize
@var = self
@some_proc = put_some_important_proc_here
end
end
显然,@some_proc
不应序列化,因此我将此方法添加到仅序列化@var
:
def encode_with(coder)
coder['var'] = @var
end
但是现在当我尝试序列化这个对象时,我得到一个堆栈溢出,因为它只是试图一次又一次地序列化自己,而没有为循环对象做那个YAML引用魔术。如何防止@some_proc
字段被序列化?