设为首页收藏本站|繁體中文

Project1

 找回密码
 注册会员
搜索
查看: 1918|回复: 2
打印 上一主题 下一主题

[question] Define a method of dump in Proc class(Ruby)

[复制链接]

老黄鸡

梦石
0
星屑
42397
在线时间
7602 小时
注册时间
2009-7-6
帖子
13506

开拓者贵宾

跳转到指定楼层
1
发表于 2011-7-30 23:31:09 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

加入我们,或者,欢迎回来。

您需要 登录 才可以下载或查看,没有帐号?注册会员

x
本帖最后由 忧雪の伤 于 2012-1-24 19:14 编辑

标题

Proc 类提供 dump 接口。



描述

具各位所知 Proc, Thread, IO (File, Socket ...), Continuation, Method 类都是无法被 dump 的。
但是如果想制作对话中存档就要用到它。($game_message.main_proc)




line display

点评

我同意蛐蛐。  发表于 2011-7-31 18:50
可以考虑以一堆字符串存进去出来后用eval么  发表于 2011-7-31 10:10
很明显,如果可以的话早就有人提供了,所以现在折中的方法就是使用 ruby2ruby ~  发表于 2011-7-31 08:17
RGDirect - DirectX驱动的RGSS,点我了解.
RM全系列成套系统定制请联系QQ1213237796
不接受对其他插件维护的委托

弓箭手?剑兰

梦石
0
星屑
5524
在线时间
833 小时
注册时间
2010-11-17
帖子
1140
2
发表于 2012-1-9 21:13:29 | 只看该作者
显然是不可能的 dump,重点是作用于该实例区域,实例释放,Proc 实例也随之消失。但是 dump 后就可以被 load,对于别的 Ruby 脚本根本不可能 load 进 $game_message.main_proc(/choice_proc),甚至那些没有 $game_message。

如果考虑 eval 的话,有两个问题:
1.实例的区域(作用域)
2.参数
eval 参数 2 binding 可以说是那个实例区域的"身份位置",但 binding 也不能 dump 。

fux2 想实时储存吧...
如果纯粹对于 $game_message 的两个 proc ,可以这样吧。
在每次 proc = Proc.new 的时候用:
$game_message.proc = "Proc.new{|xx|xx}"
call 的时候用:
$game_message.real_proc = eval($game_message.proc)
$game_message.real_proc.call(arg)
$game_message.real_proc = nil
不知道会否影响效率呢?

(其实我是刚刚被忧雪邀请进来的,似乎这里只活跃于 30~31/7)
回复 支持 反对

使用道具 举报

傻♂逼

梦石
0
星屑
374
在线时间
1606 小时
注册时间
2007-3-13
帖子
6562

烫烫烫开拓者

3
发表于 2012-1-17 21:40:51 | 只看该作者
hack解释器
回复 支持 反对

使用道具 举报

拿上你的纸笔,建造一个属于你的梦想世界,加入吧。
 注册会员
找回密码

站长信箱:[email protected]|手机版|小黑屋|无图版|Project1游戏制作

GMT+8, 2024-11-22 11:05

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表