every クラス識別子 from 参照1 to 参照2 [of | in 様々な値]
複数形クラス識別子 from 参照1 to 参照2 [of | in 様々な値]
[様々な値's] every クラス識別子 from 参照1 to 参照2
[様々な値's] 複数形クラス識別子 from 参照1 to 参照2
クラス識別子 | 取り出すクラス |
参照1 | 始まりのオブジェクト |
参照2 | 終わりのオブジェクト |
様々な値 | コンテナオブジェクトの参照 リスト,文字列のいずれか |
複数形クラス識別子 | 複数形での取り出すクラス |
オブジェクトを使用して範囲を指定する参照形式で、番号参照ができるオブジェクトならば、この参照方式も使えると考えてよく、基本的な性質は相対参照に似ている。
全参照形式に「from 参照1 to 参照2」という部分が付加された形と考えることもできる。
参照1,参照2 は、様々な値に含まれている必要があり、様々な値は省略して書く。また、参照1 と参照2 で違う種類のクラスを指定できる。
itemやcharacterがデフォルトで選択される場合が多いので、それも省略して、番号だけ書くこともできる。このような場合、構文確認時に番号で指定する形式に変換される。
また、参照1 にbeginningを、参照2 にendを書くことにより、それぞれ1,-1の代わりになる(アプリケーションによって認識できないことがあるようだ)
また、この形式は、文が長くなりがちなので、tell構文で様々な値オブジェクトを指定して、そのブロック内で使う事が多い。
条件がややこしいので、使い方を理解するには、何度か試して感じを掴んだ方が早いだろう。
指定できるオブジェクトが存在しない場合はエラーとなるので、慎重を期すならば、実行前にアプリケーションのexists命令を使い、オブジェクトがあることを調べておくか、try構文の中に置く必要がある。
範囲指定には、オブジェクトでは無く番号で指定する形式があり、より簡単な指定が可能になっている。
番号で指定する形式でも書けるものは、構文確認時に変換される。例1を構文確認してみてほしい。
items from item 1 to item 3 of "Welcome"
items from text 1 to integer 1 of {"α", 2, "γ", 4}
tell application "Finder"
tell system folder
items from folder 1 to file 5
end tell
end tell
text from word 2 to paragraph 1 of "a b c d e"