繰り返し
ループは基本的にはrepeat文で記述する。ループカウンタの増分値はbyで指定するが、増分値が+1の場合のみ増分値の記述は省略できる。
repeat with i from 1 to 10
say i as string
end repeat
repeat with i from 10 to 0 by -1
say i as string
end repeat
リスト(配列変数)の内容でループ。いわゆるforeachみたいなもの。AppleScriptではたいへんよく使う記述。
set aList to {1, 3, 5, 7, 9}
repeat with i in aList
set j to i as string
say j
end repeat
アプリケーションからオブジェクトへの参照を受け取って、ループで回すような処理はよくありますが、そのオブジェクトへの参照だと「複数あるアイテムのうちの○アイテム目」といった返り方をします。
そのものズバリのデータにアクセスしたい場合には、上記のプログラムのループ中で「contents of i」とすれば、直接アクセス可能(Twitter上でコメントを観察してみたら、AppleScript初心者がよくハマる落とし穴らしい)。
単純にループ回数のみ指定することもできる。
repeat 3 times
say “piomaru”
end
ループから途中で脱出する際には、「exit repeat」。
set a to 1
repeat 10 times
if a = 1 then
exit repeat–ここでループ脱出
end if
end repeat
repeatをネスティングして記述した場合に「exit repeat」を実行すると、1段分のみ脱出。
set a to 1
repeat 3 times
repeat 10 times
if a = 1 then
exit repeat
end if
say “Hello”
end repeat
say “Goodbye”
end repeat
repeatにはwhileとかuntilなども使えたような気もするが、あんまり使ったことがない。
set a to 3
repeat while a > 1
set a to a - 1
say a as text
end repeat