设为首页收藏本站

 找回密码
 注册
楼主: 扶老二
打印 上一主题 下一主题

反馈往数组末尾插入一项的bug [复制链接]

Rank: 1

精华
0
UID
121786
积分
40
帖子
19
主题
2
阅读权限
10
注册时间
2013-7-28
最后登录
2016-10-14
跳转到指定楼层
1#
发表于 2015-7-20 11:30:44 来自手机 |显示全部楼层 |倒序浏览
NumericArrayInsert(arr, GetNumericArraySize(arr), 1350);

反馈个bug,请问为啥这样往数组末尾动态插入一项,会导致数组除了插入了值是1350的这项外,其后面还额外增加了值为0的一项,如何解决?

Rank: 1

精华
0
UID
121786
积分
40
帖子
19
主题
2
阅读权限
10
注册时间
2013-7-28
最后登录
2016-10-14
2#
发表于 2015-7-20 13:30:21 来自手机 |显示全部楼层
本帖最后由 扶老二 于 2015-7-20 13:31 编辑
tianlan 发表于 2015-7-20 13:11
数组的范围声明和你通过NumericArrayInsert函数增加是一回事,如果你通过在程序中取值,那么它也会对数组大 ...


这个我知道,关键现在问题是我动态往数组后面插入新的一项,应该怎么做?不是用NumericArrayInsert(arr, GetNumericArraySize(arr), 1350);吗?

使用道具 举报

Rank: 1

精华
0
UID
121786
积分
40
帖子
19
主题
2
阅读权限
10
注册时间
2013-7-28
最后登录
2016-10-14
3#
发表于 2015-7-20 15:36:26 来自手机 |显示全部楼层
本帖最后由 扶老二 于 2015-7-20 18:26 编辑
tianlan 发表于 2015-7-20 15:07
是啊,然后你就要注意在NumericArrayInsert有没有超过原定范围的使用。


超过了的。比如之前是空数组,然后用NumericArrayInsert(arr, GetNumericArraySize(arr), 1350);动态push一项进去之后,数组长度变成2了,除了push进去的1350之外,还多push进去了一项,值是0,如何解决?每次动态往数组最后插入一项之后,都会同时额外多插入值是0的一项,很无语,要不你试试?

使用道具 举报

Rank: 1

精华
0
UID
121786
积分
40
帖子
19
主题
2
阅读权限
10
注册时间
2013-7-28
最后登录
2016-10-14
4#
发表于 2015-7-21 12:58:28 |显示全部楼层
那么请问,我要往一个数组末尾动态追加一项,应该使用什么写法?

使用道具 举报

Rank: 1

精华
0
UID
121786
积分
40
帖子
19
主题
2
阅读权限
10
注册时间
2013-7-28
最后登录
2016-10-14
5#
发表于 2015-7-21 13:01:38 |显示全部楼层
tianlan 发表于 2015-7-21 09:22
这个不是bug,这是为了防止数组越界必须要遵守的规则。

那么请问往数组末尾追加一项,需要用什么样的写法?

使用道具 举报

Rank: 1

精华
0
UID
121786
积分
40
帖子
19
主题
2
阅读权限
10
注册时间
2013-7-28
最后登录
2016-10-14
6#
发表于 2015-7-21 18:27:38 |显示全部楼层
tianlan 发表于 2015-7-21 14:50
NumericArrayInsert(arr, GetNumericArraySize(arr)-1, 1350);

这样是不行的,这样只写是往最后一个元素前面插入,而不是后面插入。

使用道具 举报

Rank: 1

精华
0
UID
121786
积分
40
帖子
19
主题
2
阅读权限
10
注册时间
2013-7-28
最后登录
2016-10-14
7#
发表于 2015-7-21 23:56:10 |显示全部楼层
tianlan 发表于 2015-7-21 14:50
NumericArrayInsert(arr, GetNumericArraySize(arr)-1, 1350);


Vars
    NumericArray arr;
Begin
        NumericArrayInsert(arr, GetNumericArraySize(arr)-1, 1);
        NumericArrayInsert(arr, GetNumericArraySize(arr)-1, 2);
        NumericArrayInsert(arr, GetNumericArraySize(arr)-1, 3);
        Commentary("arr[0]:" + Text(arr[0]));
        Commentary("arr[1]:" + Text(arr[1]));
        Commentary("arr[2]:" + Text(arr[2]));
        Commentary("arrLen:" + Text(GetNumericArraySize(arr)));
End

比如这样往空数组最末尾插入3项,但是数组却是: [2,3,1],而不是[1,2,3],如何解决?

使用道具 举报

Rank: 1

精华
0
UID
121786
积分
40
帖子
19
主题
2
阅读权限
10
注册时间
2013-7-28
最后登录
2016-10-14
8#
发表于 2015-7-22 12:55:39 来自手机 |显示全部楼层
tianlan 发表于 2015-7-22 10:49
Vars
    NumericArray arr;
Begin

赞,这样子可以往数组末尾不断插入新项,谢谢!

使用道具 举报

Rank: 1

精华
0
UID
121786
积分
40
帖子
19
主题
2
阅读权限
10
注册时间
2013-7-28
最后登录
2016-10-14
9#
发表于 2015-7-22 22:50:26 |显示全部楼层
tianlan 发表于 2015-7-22 10:49
Vars
    NumericArray arr;
Begin

斑竹,还有个问题,就是用这个实现,最后末尾会多出一项,值是0,如何解决?

使用道具 举报

Rank: 1

精华
0
UID
121786
积分
40
帖子
19
主题
2
阅读权限
10
注册时间
2013-7-28
最后登录
2016-10-14
10#
发表于 2015-7-24 23:33:26 |显示全部楼层
tianlan 发表于 2015-7-24 08:41
因为牵涉到插入位置的问题,如果不影响您使用的话,建议您忽略

好的,谢谢

使用道具 举报

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

bottom

静态版|手机版|联系我们|交易开拓者 ( 粤ICP备07044698   

GMT+8, 2024-5-23 16:05

Powered by Discuz! X2 LicensedChrome插件扩展

© 2011-2012 交易开拓者 Inc.

回顶部