分かりづらいので補足すると、
{"あ","い","う","え","お"}と{"1","3","5"}を入れると、
{"い","え"}が返ってきます。
ナンバーは配列でも単数でも動きます。逆に、該当ナンバーのアイテムを抽出するのは、
set 返す配列名 to item number ナンバー of 配列名
とかに書き換えるといいでしょう。(言わずもがなですが・・・)
トロくさいのでa reference toで高速化を試みましたが、あまり変わらないという・・・
100倍速くする実力をもっているはずなのに、なんでなんだろう・・・
--リストから該当するナンバーのアイテムを削除
--ナンバーがリストでも動作します
on delete_list(theList, Num)
set theList_ref to theList
-- set theList to a reference to theList --なぜか高速化しない
if (count of Num) = 1 then
set theList to delete_item(theList, Num)
else
set i to 0
repeat with a in Num
set a to a - i
set theList to delete_item(theList, a)
set i to i + 1
end repeat
return theList
end if
end delete_list
on delete_item(theList, Num)
if Num = 1 then
set theList to contents of items 2 thru -1 of theList
else if Num = (count of theList) then
set theList to contents of items 1 thru -2 of theList
else
set alist to contents of items 1 thru (Num - 1) of theList
set blist to contents of items (Num + 1) thru (count of theList) of theList
set theList to alist & blist
end if
return theList
end delete_item
0 件のコメント:
コメントを投稿