作者laechan (小太保)
看板mud_sanc
标题Re: [wizs] mixed的使用方法??
时间Tue Aug 31 17:17:45 2010
※ 引述《justinj (闇冥)》之铭言:
: mixed a=({2,3,4,2,1,1,.....})
: 问题1....要如何像string取第i个~第j个值
: 像第2~4个为 ({3,4,2}).....
mixed b = a[1..3];
: 问题2...要怎麽移除第i个..或移除第i~j个
: 像移除第3个 後等於({2,3,2,1,1,...})
懒人写法
mixed b = ({});
b = a[0..i-1];
b += a[j..sizeof(a)-1];
: 问题3...要怎麽取代第i个值为多少的...
: 像取代第2个1为5..後等於 ({2,3,4,2,1,5,....})
a[5]=1?
基本上我会建议写函数来处理上述问题...
varargs mixed process_a(mixed aa,string types,mixed bb)
{
mixed tmps=({});
int i,j,k;
switch(types)
{
case "query":
j=sizeof(bb);
for(i=0;i<j;i++)
tmps+=({aa[(int)bb[i]-1]});
return tmps;
break;
case "remove":
j=sizeof(bb);
k=sizeof(aa);
for(i=0;i<k;i++)
if(member_array(bb,i+1)!=-1)
tmps+=({aa[i]});
return tmps;
break;
case "replace":
aa[bb[0]-1]=bb[1];
return aa;
break;
case "replacex":
j=sizeof(aa);
for(i=0;i<j;i++)
{
if((int)aa[i]==bb[1])
{
jj+1;
if(jj==bb[0])
{
a[i]=bb[2];
return a;
}
}
}
break;
}
这样当
mixed a=({2,3,4,2,1,1,.....})
呼叫 process_a(a,"query",({2,4,6})) 时 "回传第 2 4 6 个值"
会回传 ({3,2,1}) // 第 2, 4, 6 个
呼叫 process_a(a,"remove",({1,3})) 时 "把第 1 跟第 3 个值移除掉"
会回传 ({3,2,1,1,...}) // 没有第 1 3 个
呼叫 process_a(a,"replace",({6,5})) 时 "把第 6 个值改成 5"
会回传 ({2,3,4,2,1,5,......})
呼叫 process_a(a,"replacex",({2,1,5}) 时 "把第 2 个 1 改成 5"
会回传 ({2,3,4,2,1,5,......})
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 110.27.71.254
1F:推 justinj :了解.....3Q 08/31 18:01