リストの全ての項目に同じ操作を加えたい場面は、ちょくちょく出てきます。
普通に考えれば、例えば「全ての項目に+1する」という場合、次のようなスクリプトになると思います。
set theList to {1, 2, 3, 4, 5, 6}
repeat with i from 1 to number of theList
set item i of theList to (item i of theList) + 1
end repeat
theList
これでも構わないのですが、curitemに入っているのは値そのものでは無くて参照なので、その事を利用すると少し簡単に書けます。
速度も高速なのも有り難いところです。
set theList to {1, 2, 3, 4, 5, 6}
repeat with curItem in theList
set contents of curItem to curItem + 1
end repeat
theList
上のスクリプトは内部的に、下のようなスクリプトになっていると考えられます。
set theList to {1, 2, 3, 4, 5, 6}
repeat with i from 1 to number of theList
set curItem to (a reference to (item i of theList))
set contents of curItem to curItem + 1
end repeat
theList
つまり、リストの項目数を数えたり参照を代入したりといった処理をAppleScript側でやってくれているわけです。
ハンドラに渡す場合そもそもリストは参照渡しなので(詳しくは「引数の参照渡し」を参照して下さい)、ハンドラで処理する場合にどうなるかを考えてみます。
素直にスクリプトを書くと次のようになります。
set theList to {1, 2, 3, 4, 5, 6}
addOne(theList)
theList
on addOne(tmpList)
repeat with curItem in tmpList
set contents of curItem to curItem + 1
end repeat
end addOne
見事に期待通りの働きをし、theListの各項目は+1されます。
何気ないTipですが、強力です。知っておいて損は無いでしょう。