查看: 3176|回复: 11

[已经解决] 请问一下怎么把string类型的marshal直接读取

[复制链接]
梦石
0
星屑
238
在线时间
23 小时
注册时间
2018-12-11
回帖
11
发表于 2019-1-30 00:36:50 | 显示全部楼层 |阅读模式

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

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

×
本帖最后由 ISfishes 于 2019-1-30 12:47 编辑

变量a为marshal形式的文件的【全部字节】
比如a=“\004\010o:\rRPG::Map………………”  (marshal形式)
我知道可以用File.write a然后Marshal.load
但是这样要先生成文件,再读取,甚至还要删除生成的文件。速度太慢了
有没有办法直接处理a【不生成文件】得到和上面一样的效果呢?
梦石
0
星屑
19426
在线时间
3082 小时
注册时间
2013-1-11
回帖
1207
发表于 2019-1-30 09:01:14 | 显示全部楼层
  1. save_data('abc', "1.txt")
  2. p load_data('1.txt')
复制代码

点评

好像明白你的意思了,以前把对象inspect后,想还原为对象属性是一个意思,后来没找到方法就放弃了。。  发表于 2019-1-30 13:42
直接的话操作File类read读取  发表于 2019-1-30 13:26
这样是间接获取结果,有没有直接的方法  发表于 2019-1-30 12:30
回复

使用道具 举报

梦石
0
星屑
238
在线时间
23 小时
注册时间
2018-12-11
回帖
11
 楼主| 发表于 2019-1-30 12:46:05 | 显示全部楼层
本帖最后由 ISfishes 于 2019-1-30 12:47 编辑

可能1f没说清楚,修改了一下
回复

使用道具 举报

梦石
0
星屑
238
在线时间
23 小时
注册时间
2018-12-11
回帖
11
 楼主| 发表于 2019-2-3 20:11:53 | 显示全部楼层
有没有办法嘛……
回复

使用道具 举报

梦石
1
星屑
24088
在线时间
3339 小时
注册时间
2011-7-8
回帖
3862

开拓者

发表于 2019-2-3 20:15:26 | 显示全部楼层
本帖最后由 guoxiaomi 于 2019-2-3 20:20 编辑

在 XP 里执行 Marshal.methods - Object.methods,显示:
  1. ["load","dump","restore"]
复制代码

第三个函数干啥用的,你已经知道了吧……

点评

这猫叔,不好好看文档  发表于 2019-2-3 22:44
熟悉rgss和ruby,xp区版主~
正在填坑:《膜拜组传奇》讲述膜拜组和学霸们的故事。
已上steam:与TXBD合作的Reformers《变革者》
* 战斗调用公共事件 *
* RGSOS 网络脚本 *
回复

使用道具 举报

梦石
0
星屑
9557
在线时间
5074 小时
注册时间
2013-6-21
回帖
3459

开拓者贵宾剧作品鉴家

发表于 2019-2-3 23:02:31 | 显示全部楼层
本帖最后由 RyanBern 于 2019-2-3 23:05 编辑

按文档中所说,Marshal.dump 本身就是支持直接写入到字符串的,因此 Marshal.load 自然也支持直接从字符串读取。所以你什么额外操作都不用做,只需要对这个字符串进行 Marshal.load 即可。
[pre lang="Ruby"]s = Marshal.dump($game_temp)
s1 = Marshal.load(s)
p s1 # => 恰好是 $game_temp 的内容
[/pre]
在这里补充 Marshal.dump 的用法
[pre lang="Ruby"]Marshal.dump(obj [, port][, limit])
[/pre]
表示将对象 obj 写入端口 port 中,递归写入的最大层数是 limit。这里的 port 可以是个 IO 实例,也可留空表示输出到字符串。当省略这个参数时,Marshal.dump 的返回值就是一个字符串。

点评

明明刚刚测试了一下发现不行的……结果又可以了= =  发表于 2019-2-3 23:20

评分

参与人数 2赞 +2 收起 理由
张咚咚 + 1 认可答案
fux2 + 1 强瞎

查看全部评分

回复

使用道具 举报

梦石
0
星屑
238
在线时间
23 小时
注册时间
2018-12-11
回帖
11
 楼主| 发表于 2019-2-8 09:39:17 | 显示全部楼层
666666,感谢2位版主大大
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

Powered by Discuz! X5.0 © 2001-2026 Discuz! Team.

在本版发帖返回顶部