利用Marshal 进行深拷贝

Marshal 是一个将ruby 对象转换为byte的库。marshaling can only load data written with the same major version number and an equal or lower minor version number。他只能对拷贝进行操作。dump是讲object转到byte。load是讲byte转到object。利用它对拷贝进行操作的特性进行深度拷贝。

至于深度拷贝是什么呢?所谓深度拷贝就是这样子一个例子:

str = "hello world "

str2 = str

str2[0] = 'H'

这样子str == "Hello world", str2 == "Hello world"。这样可能引起错误,利用=复制仅仅是给str2一个地址,其实还是只有一份。

而str2 = Marshal.load(Marshal.dump(str))

  str2[0] = 'H'

这样子,str == "hello world", "str2" == "Hello world"。这样子是为str2开辟一个内存空间,并且给其一个地址。这样实际上是有2份。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值