Project1

标题: 将数组传入改变数组内容的函数后,数组内容却没有改变 [打印本页]

作者: 键山雏    时间: 2012-6-20 16:30
标题: 将数组传入改变数组内容的函数后,数组内容却没有改变
本帖最后由 键山雏 于 2012-6-20 17:22 编辑

如下面一段代码
  1. def abc(arr)
  2.   arr = [4,5,6]
  3. end

  4. a = [1,2,3]
  5. abc(a)
  6. p a
复制代码
我希望输出[4,5,6],但是结果却输出了[1,2,3]
为什么会出现这种现象?不是说数组是引用/复杂数据类型的么?
如何才能达到我想要的结果(当然直接给a赋值的方法就算了= =)

我希望通过给数组外部的函数传入数组的引用,让函数通过这个引用来改变数组dsu_plus_rewardpost_czw
作者: Wind2010    时间: 2012-6-20 17:12
  1. class Array
  2.   def abc
  3.     self = [4,5,6]
  4.     return self
  5.   end
  6. end
  7. a = [1,2,3]
  8. a.abc
  9. p a
复制代码
无RM表示无法测试
作者: chd114    时间: 2012-6-20 19:42
用变量数组不是更好么
作者: wbsy8241    时间: 2012-6-20 20:25
arr = [xxx]
相当于你做了个新的变量
改引用要这样:
  1. def abc(arr)
  2.   arr[0] = 4
  3.   arr[1] = 5
  4.   arr[2] = 6
  5. end

  6. a = [1,2,3]
  7. abc(a)
  8. p a
复制代码

作者: 键山雏    时间: 2012-6-20 20:29
本帖最后由 键山雏 于 2012-6-20 20:29 编辑
wbsy8241 发表于 2012-6-20 20:25
arr = [xxx]
相当于你做了个新的变量
改引用要这样:


也就是说,arr = 这句话实际上是将一个新的引用赋给了arr对吗?
作者: chd114    时间: 2012-6-20 20:31
键山雏 发表于 2012-6-20 20:29
也就是说,arr = 这句话实际上是将一个新的引用赋给了arr对吗?

变量数组就是
变量X=[X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X](可以做到无限大···)




欢迎光临 Project1 (https://rpg.blue/) Powered by Discuz! X3.1