41、Ruby编程:Marshal、MatchData、Math、Method和Module模块详解

Ruby编程:Marshal、MatchData、Math、Method和Module模块详解

1. Marshal模块

1.1 概述

Marshal库可将Ruby对象集合转换为字节流,便于将其存储在当前活动脚本之外,后续还能读取这些数据并重构原始对象。

1.2 版本号

Marshaled数据会存储主版本号和次版本号。正常使用时,Marshal只能加载主版本号相同且次版本号相等或更低的数据。若设置了Ruby的“verbose”标志,主版本号和次版本号必须完全匹配。可以通过读取Marshaled数据的前两个字节来提取版本号。示例代码如下:

str = Marshal.dump("thing")
RUBY_VERSION
# => "1.8.2"
str[0]
# => 4
str[1]
# => 8

1.3 不可转储的对象

某些对象无法进行转储,若要转储的对象包含绑定、过程或方法对象、IO类的实例、单例对象,或者尝试转储匿名类或模块,会引发TypeError。

1.4 自定义序列化

若类有特殊的序列化需求,或者包含无法序列化的对象,可以实现自己的序列化策略。在Ruby 1.8之前,需定义 _dump _load 方法。Ruby 1.8引入了更灵活的接口,使用实例方法 marshal_dump marshal_load 。示例代码如

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值