sizak 发表于 2010-11-11 10:12:45

请教zmud高人

比较数组。
比如固定数组是test={a,b,c,d,e};
游戏中抓取了新的数组{b,e}.
请问如何比较 新数组在固定数组里所没有的。谢谢

bluse 发表于 2010-11-11 10:42:03

#va diff;
#forall @new {#if (!%ismember(%i,@test)) {%additem(%i,@diff)}}

[ 本帖最后由 bluse 于 2010-11-11 11:02 AM 编辑 ]

bluse 发表于 2010-11-11 10:58:31

注意默认的列表变量是用“|”来分隔项目的。

sizak 发表于 2010-11-11 10:58:37

%forall? zmud462 没这函数吧, 是#forall吧?
还有就是462中不能直接 运算%additem(%i,@diff)。咋处理了.谢谢

bluse 发表于 2010-11-11 11:02:43

原帖由 sizak 于 2010-11-11 10:58 AM 发表 http://pkuxkx.com/forum/images/common/back.gif
%forall? zmud462 没这函数吧, 是#forall吧?
还有就是462中不能直接 运算%additem(%i,@diff)。咋处理了.谢谢

%additem可以用

sizak 发表于 2010-11-11 11:29:11

sigh,还是不能运算得到。我举个实例吧,多谢。
aa={1|2|3|4|5} 为固定的
a={1|2|3} 为抓取
#var diff {};#forall @new {#if (!%ismember(@a,@aa)) {%additem(%i,@diff)}}

#var diff {};#forall @new {#if (!%ismember(%i,@aa)) {%additem(%i,@diff)}}
都不行,是需要加点什么么。。。

oolong 发表于 2010-11-11 14:12:16

原帖由 sizak 于 2010-11-11 11:29 AM 发表 http://edu.pkuxkx.com:8082/forum/images/common/back.gif
sigh,还是不能运算得到。我举个实例吧,多谢。
aa={1|2|3|4|5} 为固定的
a={1|2|3} 为抓取
#var diff {};#forall @a {#if (%pos(%i,@aa)) {%additem(%i,@diff)}}

我发现这样容易误判断。比如aa=10|9    a=1
会发生错误。可以用一个傻办法
aa=|@ aa|
#var diff {};#forall @a {#if (%pos("|%i|",@aa)) {%additem(%i,@diff)}}

[ 本帖最后由 oolong 于 2010-11-11 02:29 PM 编辑 ]

bluse 发表于 2010-11-11 15:51:50

我的@new就是指你说的“新的数组”,还有列表一律用%ismember,%pos用来做一个完整字符串的寻找。
如果按你给的名字,把@new改成@a就行了。

sizak 发表于 2010-11-11 16:19:45

成功了。。。感谢各位。
#if (!%ismember(@a,@aa))需要加判断:{#if (!%ismember(@a,@aa))>0 就行了。

oolong 发表于 2010-11-11 20:42:09

原帖由 sizak 于 2010-11-11 04:19 PM 发表 http://www.pkuxkx.com/forum/images/common/back.gif
成功了。。。感谢各位。
#if (!%ismember(@a,@aa))需要加判断:{#if (!%ismember(@a,@aa))>0 就行了。

zmud462还不错嘛,还有ismember
页: [1] 2
查看完整版本: 请教zmud高人