Re: [wizs] mixed的使用方法??

看板mud_sanc (Sanctuary - 聖殿)作者 (小太保)時間15年前 (2010/08/31 17:17), 編輯推噓1(100)
留言1則, 1人參與, 最新討論串2/2 (看更多)
※ 引述《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

08/31 18:01, , 1F
了解.....3Q
08/31 18:01, 1F
文章代碼(AID): #1CVCYzlr (mud_sanc)
討論串 (同標題文章)
文章代碼(AID): #1CVCYzlr (mud_sanc)