本文简要介绍ruby语言中 Marshal.load
的用法。
用法
load(source, proc = nil, freeze: false) → obj
也别名为:restore
返回将源中的序列化数据转换为 Ruby 对象(可能带有关联的从属对象)的结果。 source 可以是 IO
的实例或响应to_str 的对象。如果指定了 proc,则每个对象都将被传递给 proc,因为该对象正在被反序列化。
切勿将不受信任的数据(包括用户提供的输入)传递给此方法。请参阅概述了解更多详情。
如果传递freeze: true
参数,反序列化的对象将被深度冻结。请注意,由于冻结的字符串重复数据删除,它可能会导致更有效的内存使用:
serialized = Marshal.dump(['value1', 'value2', 'value1', 'value2'])
deserialized = Marshal.load(serialized)
deserialized.map(&:frozen?)
# => [false, false, false, false]
deserialized.map(&:object_id)
# => [1023900, 1023920, 1023940, 1023960] -- 4 different objects
deserialized = Marshal.load(serialized, freeze: true)
deserialized.map(&:frozen?)
# => [true, true, true, true]
deserialized.map(&:object_id)
# => [1039360, 1039380, 1039360, 1039380] -- only 2 different objects, object_ids repeating
相关用法
- Ruby Marshal.dump用法及代码示例
- Ruby Marshal模块用法及代码示例
- Ruby Markdown类用法及代码示例
- Ruby Markup类用法及代码示例
- Ruby Markup.add_regexp_handling用法及代码示例
- Ruby MatchData.pre_match用法及代码示例
- Ruby Matrix lup()用法及代码示例
- Ruby Matrix unitary?()用法及代码示例
- Ruby Matrix symmetric?()用法及代码示例
- Ruby Matrix t()用法及代码示例
- Ruby Matrix identity()用法及代码示例
- Ruby Matrix hash()用法及代码示例
- Ruby Matrix hadamard_product()用法及代码示例
- Ruby Matrix singular?()用法及代码示例
- Ruby Math sqrt()用法及代码示例
- Ruby Matrix round()用法及代码示例
- Ruby Matrix collect()用法及代码示例
- Ruby Math.acosh用法及代码示例
- Ruby Matrix hermitian?()用法及代码示例
- Ruby Matrix row_vectors()用法及代码示例
- Ruby Matrix conjugate()用法及代码示例
- Ruby Math.asinh用法及代码示例
- Ruby Matrix cofactor()用法及代码示例
- Ruby Matrix rectangular()用法及代码示例
- Ruby Matrix component()用法及代码示例
注:本文由纯净天空筛选整理自ruby-lang.org大神的英文原创作品 Marshal.load。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。