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

Project1

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

[讨论] 调用数组的函数会损伤原数组

[复制链接]

Lv3.寻梦者

梦石
0
星屑
1024
在线时间
1389 小时
注册时间
2010-8-9
帖子
3471
跳转到指定楼层
1
发表于 2013-8-6 19:07:56 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

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

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

x
方才编脚本时,发现只在函数中修改调用充当参数的数组,原数组也会改变,当然目前只发现调用array[id]=的时候才出现这种情况
调式结果出乎意料……无论是XP还是VX……{:2_263:} {:2_263:}
  1. def ch_array(array)
  2.   return array[0] = 0
  3. end

  4. a=[3]
  5. p a  #结果:[3]
  6. d = ch_array(a)
  7. p a  #结果:[0]
  8. p d  #结果:0
复制代码
SRPG on RM 项目研发组 正式成立。目前SRPG·RMVA系统进度88.8%。SMRC Kernel 进度90%
↖(^ω^)↗热烈庆祝~SMRC Ver5.1 SRPG战棋地图移动范围生成脚本正式发布~~
-----------------------------------------------------------------------------------------
SMRC具有高性能、高兼容、定制自由、使用方便的特点。
1.性能,100移动力轻松算出,无压力;
2.兼容,RGSS1-3通吃,效率保证;
3.支持移动形状定制,支持4方位、6方位、正方形或其他任意有移动规律的形状;
4.可以充当高性能寻路来使用。
【链接点此】
-----------------------------------------------------------------------------------------
【2016/01/06更新 | 改版】RM脚本编辑器Gemini
-----------------------------------------------------------------------------------------

Lv3.寻梦者

梦石
0
星屑
1024
在线时间
1389 小时
注册时间
2010-8-9
帖子
3471
2
 楼主| 发表于 2013-8-6 19:09:31 | 只看该作者
我是说08行的那个,按理说应该也是[3]啊啊啊{:2_272:}{:2_272:}{:2_272:}{:2_272:}{:2_272:}
SRPG on RM 项目研发组 正式成立。目前SRPG·RMVA系统进度88.8%。SMRC Kernel 进度90%
↖(^ω^)↗热烈庆祝~SMRC Ver5.1 SRPG战棋地图移动范围生成脚本正式发布~~
-----------------------------------------------------------------------------------------
SMRC具有高性能、高兼容、定制自由、使用方便的特点。
1.性能,100移动力轻松算出,无压力;
2.兼容,RGSS1-3通吃,效率保证;
3.支持移动形状定制,支持4方位、6方位、正方形或其他任意有移动规律的形状;
4.可以充当高性能寻路来使用。
【链接点此】
-----------------------------------------------------------------------------------------
【2016/01/06更新 | 改版】RM脚本编辑器Gemini
-----------------------------------------------------------------------------------------
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
141 小时
注册时间
2013-8-6
帖子
114
3
发表于 2013-8-7 00:29:26 | 只看该作者
这没什么奇怪啊。。在方法里修改变量本身会改变的
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
466 小时
注册时间
2013-2-8
帖子
424
4
发表于 2013-8-7 06:37:12 手机端发表。 | 只看该作者
都指向一个数组实例,印象里除了Numeric都是这样的。可以clone或dup一下。
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
60
在线时间
705 小时
注册时间
2007-12-23
帖子
874
5
发表于 2013-8-13 20:48:22 | 只看该作者
如果RUBY和C语言系列一样的话,
数组应该是传指针的吧,不然系统执行时还得把整个数组重新复制一遍,效率十分低下
买了正版RMMV的同学进来看一下,谢谢~
https://rpg.blue/thread-393237-1-1.html
回复 支持 反对

使用道具 举报

Lv3.寻梦者

梦石
0
星屑
1050
在线时间
1564 小时
注册时间
2008-7-30
帖子
4418

贵宾

6
发表于 2013-8-15 12:48:23 | 只看该作者
为什么不会呢?语句array[0]=的意图就是要修改原数组索引为0号元素的值。

See FScript Here:https://github.com/DeathKing/fscript
潜心编写URG3中。
所有对URG3的疑问和勘误或者建议,请移步至发布页面。
欢迎萌妹纸催更
回复 支持 反对

使用道具 举报

Lv2.观梦者

梦石
0
星屑
550
在线时间
1286 小时
注册时间
2011-6-14
帖子
4086
7
发表于 2013-8-15 13:02:06 | 只看该作者
第二行改成return array[0] == 0即可。ruby中=是赋值而==是相等。
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
13 小时
注册时间
2013-8-7
帖子
6
8
发表于 2013-8-15 13:34:09 | 只看该作者
def ch_array(array)
  return array[0] = 0
end
你这是将这个数组(array)的第一个元素赋值为零,然后再return这个为零的值
已经在修改数组存放的数据了,类似c/c++的带地址操作
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
112
在线时间
551 小时
注册时间
2012-8-18
帖子
1429
9
发表于 2013-8-23 08:37:23 | 只看该作者
是你自己已经将数组进行操作了啊(02行)……
02行的实际操作是
先将array的第0个数据改为0
然后返回array的第0个数据【好吧我承认返回=左边还是右边的我忘记了……都一样啦=-=】
如果LZ想要判定array[0]是否等于0 那么请用==
如果LZ想要返回array[0] 那么=0部分请去掉

点评

见13L  发表于 2013-8-26 11:44
我要填坑!我要背单词!我要学日语!我要每天锻炼!
好吧呵呵= =
回复 支持 反对

使用道具 举报

Lv3.寻梦者

梦石
0
星屑
1024
在线时间
1389 小时
注册时间
2010-8-9
帖子
3471
10
 楼主| 发表于 2013-8-25 19:40:54 | 只看该作者
不调用函数也会损伤
RUBY 代码复制
  1. a = [0,1,2]
  2. b = a
  3. b[0] = 1
  4. p a #[1,1,2]
  5. p b #[1,1,2]
SRPG on RM 项目研发组 正式成立。目前SRPG·RMVA系统进度88.8%。SMRC Kernel 进度90%
↖(^ω^)↗热烈庆祝~SMRC Ver5.1 SRPG战棋地图移动范围生成脚本正式发布~~
-----------------------------------------------------------------------------------------
SMRC具有高性能、高兼容、定制自由、使用方便的特点。
1.性能,100移动力轻松算出,无压力;
2.兼容,RGSS1-3通吃,效率保证;
3.支持移动形状定制,支持4方位、6方位、正方形或其他任意有移动规律的形状;
4.可以充当高性能寻路来使用。
【链接点此】
-----------------------------------------------------------------------------------------
【2016/01/06更新 | 改版】RM脚本编辑器Gemini
-----------------------------------------------------------------------------------------
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-4-28 21:21

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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