经常我们需要以一种更透明的方式来存储和得到数据.Marshal模块提供了简单的对象持久化,PStore 库建立在这项技术之上。dbm 库使用像hash一样并永久的存贮在磁盘上.
1简单的Marshaling
经常我们需要创建一个对象,然后为了以后的使用保存它.ruby对这种对象持久化(或者说是 Marshaling)提供了基本的支持.Marshal 模块能够使程序员序列化和反序列化一个ruby对象.
# array of elements [composer, work, minutes] works = [["Leonard Bernstein","Overture to Candide",11], ["Aaron Copland","Symphony No. 3",45], ["Jean Sibelius","Finlandia",20]] # We want to keep this for later... File.open("store","w") do |file| Marshal.dump(works,file) end # Much later... File.open("store") do |file| works = Marshal.load(file) end
这里要注意的是这种技术并不是所有的对象能被dump.如果一个对象包含一个低级别的类的对象,他就 不能被dump,比如IO、Proc和Binding,单例对象,匿名对象,模块也不能被序列化.
Marshal.dump 还有另外两种参数的形式,如果调用时传入一个参数的话,它将会返回返回一个由字符 串表示的数据,其中前两个字节为主版本号和次版本号:
这边的话1.9和1.8的结果是不同的:
s = Marshal.dump(works) p s[0] # 4 p s[1] # 8
以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索file
, 对象
, 模块
, dump
, #Marshal
, 一个
, Marshal
ios数据存取
ruby 类存取器、the ruby way 3rd pdf、the ruby way、the ruby way pdf、learn ruby hard way,以便于您获取更多的相关知识。