【发布时间】:2009-01-04 00:50:54
【问题描述】:
我找到了一些关于该主题的信息 (like this link),但没有任何信息告诉我它实际上是如何运作的。如果您不想阅读下面的文章,这里是真正的问题:
我应该如何实现
marshal_dump和marshal_load方法?即使是一个简单的例子也可以。当
marshal_load被调用时,它如何“知道”要创建哪种类型的对象?如果文件中有多个相同类型的对象,你怎么知道哪个是哪个?我显然很困惑......如果我有一个代表图像的对象,是否有其他方法可以将其写入磁盘?
我的具体问题是这样的:
这有点复杂,因为我没有想要序列化的对象的源代码。
我正在开发游戏引擎的模组(使用 RGSS2 游戏库的 RPG Maker VX)。有一个名为 Bitmap 的类属于(闭源)API。我想在游戏之间保存这个对象/图像,所以我需要将它序列化到保存文件中。我不是 ruby 专业人士,但我知道我可以定义两个方法(marshal_dump 和 marshal_load),当我尝试序列化对象时,“Marshal”模块将调用它们。
问题是我不知道如何实现所需的两种方法。实际上,我可以将它们保留为空方法,并且它似乎可以工作,但对象实际上已被处置,图像数据已消失。除此之外,我不明白它在内部做什么,显然创建空方法是错误的。
那么谁能告诉我这些东西在内部是如何工作的?我认为这将帮助我解决我的问题。除此之外,我可以使用另一种类型的图像格式,我可以将其保存到文件中并避免自己进行序列化?
【问题讨论】:
标签: ruby serialization