我是靠谱客的博主 傲娇朋友,最近开发中收集的这篇文章主要介绍ruby 中的赋值和copy,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

在ruby 中,你经常会遇到一些相互赋值


比如说


 

a = 1
b = a

a += 1

puts b

按照我们C语言的经验,这个输出是什么了  输出的值为  1 , 也就是说b 不会随着 a 的值变化而变化。


a =[1, 2]
b = a 

a<<3

puts b.inspect

想想看, 现在的输出是多少了? [1, 2] ?  No  结果是 [1, 2, 3]


很神奇吧。。。。。


那有些人就问我, 那我想copy之后,双方就不相互影响怎么办?


有两个办法 dup 和clone


 a= [1, 2]
b = a.dup
a<<3
puts b.inspect


你会发现b 没有受到影响吧。。。。其结果还是[1, 2]


好了,现在我们让a 变得更加复杂点。


a =[[1, 2]]

b = a.dup

a[0] << 3

puts b.inspect

结果是什么, 你会发现你的b 还是受到影响了。。。。。


也就是说使用dup, 只能copy 最表层的数据 使其不受影响。。。。


如果你要copy全部的数据,而不受影响的话, 那就要使用Marshal


a = [[1, 2]]
b = Marshal.load( Marshal.dump(a) )
a[0] << 3
puts b.inspect



最后

以上就是傲娇朋友为你收集整理的ruby 中的赋值和copy的全部内容,希望文章能够帮你解决ruby 中的赋值和copy所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(39)

评论列表共有 0 条评论

立即
投稿
返回
顶部