首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何串行化/序列化Ruby代码?

如何串行化/序列化Ruby代码?
EN

Stack Overflow用户
提问于 2008-10-14 00:44:42
回答 4查看 7.3K关注 0票数 16

我希望能够在Ruby代码中编写一个lambda/Proc,序列化它,这样我就可以将它写到磁盘上,然后再执行lambda。有点像..。

代码语言:javascript
复制
x = 40
f = lambda { |y| x + y }
save_for_later(f)

稍后,在Ruby解释器的单独运行中,我希望能够说...

代码语言:javascript
复制
f = load_from_before
z = f.call(2)
z.should == 42

Marshal.dump不适用于Procs。我知道Perl有Data::Dump::Streamer,在Lisp语言中这是微不足道的。但是有没有办法在Ruby中做到这一点呢?换句话说,save_for_later的实现是什么?

编辑My answer below很好,但它不会关闭自由变量(如x)并将它们与一起序列化。所以在我的例子中。

代码语言:javascript
复制
x = 40
s = save_for_later { |y| x + y }
# => "lambda { |y|\n  (x + y)\n}"

..。字符串输出不包括x的定义。有没有一种解决方案可以考虑到这一点,可能是通过序列化符号表?你能在Ruby中访问它吗?

编辑2:我更新了我的答案,加入了序列化局部变量。这似乎是可以接受的。

EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/199603

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档