查看: 2063|回复: 5

[已经解决] 将数组传入改变数组内容的函数后,数组内容却没有改变

[复制链接]
梦石
0
星屑
50
在线时间
5 小时
注册时间
2012-5-24
回帖
12
发表于 2012-6-20 16:30:53 | 显示全部楼层 |阅读模式

加入我们,或者,欢迎回来。

您需要 登录 才可以下载或查看,没有账号?注册会员

×
本帖最后由 键山雏 于 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赋值的方法就算了= =)

我希望通过给数组外部的函数传入数组的引用,让函数通过这个引用来改变数组

虱子

梦石
0
星屑
121
在线时间
1782 小时
注册时间
2010-6-19
回帖
3515
发表于 2012-6-20 17:12:20 | 显示全部楼层
  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表示无法测试

点评

不过self就是持有自己的引用所以刚才说的也不太对= =我的意思是说,我希望通过给数组外部的函数传入数组的引用,让函数通过这个引用来改变数组  发表于 2012-6-20 17:22
这相当于给a直接赋值,我是希望通过a的引用来修改a  发表于 2012-6-20 17:16

http://rpg.blue/thread-175056-1-2.html
PVZ型塔防物一个
http://rpg.blue/thread-155199-1-2.html
RMXP技术讨论区手动认可帖,得到答案请认可
回复

使用道具 举报

梦石
0
星屑
9292
在线时间
2504 小时
注册时间
2011-5-20
回帖
14521

开拓者

发表于 2012-6-20 19:42:55 | 显示全部楼层
用变量数组不是更好么

点评

变量数组......是什么东西  发表于 2012-6-20 20:20
[img]http://service.t.sina.com.cn/widget/qmd/5339802982/c02e16bd/7.png
回复

使用道具 举报

梦石
0
星屑
50
在线时间
1281 小时
注册时间
2006-8-27
回帖
550
发表于 2012-6-20 20:25:19 | 显示全部楼层
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
复制代码
回复

使用道具 举报

梦石
0
星屑
50
在线时间
5 小时
注册时间
2012-5-24
回帖
12
 楼主| 发表于 2012-6-20 20:29:18 | 显示全部楼层
本帖最后由 键山雏 于 2012-6-20 20:29 编辑
wbsy8241 发表于 2012-6-20 20:25
arr = [xxx]
相当于你做了个新的变量
改引用要这样:


也就是说,arr = 这句话实际上是将一个新的引用赋给了arr对吗?

点评

个人觉得变量不会那么容易就冲突最多就无效而已···  发表于 2012-6-21 09:14
是吧 只能改数组里面的值(系统认为你改的是原数据) 不能把整个数组替直接换为另一个  发表于 2012-6-20 20:35
回复

使用道具 举报

梦石
0
星屑
9292
在线时间
2504 小时
注册时间
2011-5-20
回帖
14521

开拓者

发表于 2012-6-20 20:31:26 | 显示全部楼层
键山雏 发表于 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](可以做到无限大···)

点评

但是变量X和问题中的a是同样的,所以用不用变量倒是没什么关系  发表于 2012-6-20 20:32
[img]http://service.t.sina.com.cn/widget/qmd/5339802982/c02e16bd/7.png
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

Powered by Discuz! X5.0 © 2001-2026 Discuz! Team.

在本版发帖返回顶部