设为首页收藏本站|繁體中文

Project1

 找回密码
 注册会员
搜索
查看: 1825|回复: 5
打印 上一主题 下一主题

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

[复制链接]

Lv1.梦旅人

梦石
0
星屑
50
在线时间
5 小时
注册时间
2012-5-24
帖子
14
跳转到指定楼层
1
发表于 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赋值的方法就算了= =)

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

Lv1.梦旅人

虱子

梦石
0
星屑
121
在线时间
1782 小时
注册时间
2010-6-19
帖子
3597
2
发表于 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技术讨论区手动认可帖,得到答案请认可
回复

使用道具 举报

Lv4.逐梦者

梦石
0
星屑
9280
在线时间
2504 小时
注册时间
2011-5-20
帖子
15389

开拓者

3
发表于 2012-6-20 19:42:55 | 只看该作者
用变量数组不是更好么

点评

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

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
1281 小时
注册时间
2006-8-27
帖子
590
4
发表于 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
复制代码
回复

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
5 小时
注册时间
2012-5-24
帖子
14
5
 楼主| 发表于 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
回复

使用道具 举报

Lv4.逐梦者

梦石
0
星屑
9280
在线时间
2504 小时
注册时间
2011-5-20
帖子
15389

开拓者

6
发表于 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
回复

使用道具 举报

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

本版积分规则

拿上你的纸笔,建造一个属于你的梦想世界,加入吧。
 注册会员
找回密码

站长信箱:[email protected]|手机版|小黑屋|无图版|Project1游戏制作

GMT+8, 2024-11-23 22:01

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表