碰到个问题,把一个哈希赋值给一个变量,如果不是在函数里面(哈希作为参数被函数调用)操作,就是按值传递(新分配了一片内存);但是如果在函数中操作,却是按引用传递(修改哈希的内部元素,被赋值的变量也会相应地变化)。
想请教下这是为什么?
想请教下这是为什么?
1
oaix Nov 27, 2014
楼主是怎么得到这个疑问的。把测试代码发出来看看。我使用没有你说的问题。
```ruby ➜ ~ irb >> a = {a: 1} => {:a=>1} >> a => {:a=>1} >> b = a => {:a=>1} >> b[:b] = 2 => 2 >> b => {:a=>1, :b=>2} >> a => {:a=>1, :b=>2} >> b[:a] = 2 => 2 >> a => {:a=>2, :b=>2} >> b => {:a=>2, :b=>2} >> ➜ ~ ruby -v ruby 1.9.3p448 (2013-06-27) [i386-cygwin] ``` |
2
royzhanggy OP @oaix 写个脚本,写个函数,把哈希作为参数传进去,然后在函数里进行变量赋值,就会变成引用传递了....我也不懂为嘛会这样
|
3
oaix Nov 27, 2014
@royzhanggy 直接赋值也是引用传递。
|