AppleScriptでは、別の書き方をしても、全く機能に違いがないものが少なくありません。このような用語を同義語とします。
「省略できる用語」と似ていますが、同義語の場合は省略しているわけではないので、構文確認時に単語が補完されたりはしません。
同義語の多くは、スクリプトがより自然な英語に近くできるようにする配慮から用意されています。
このような繊細な配慮は、AppleScriptをAppleScriptたらしめている部分ですが、日本人にとっては、気にすることが増えて面倒なだけだったりします。
一応、ざっと眺めておく程度にして、無理に使い分けようと考えない方がいいでしょう。
私は折角だから使い分けようかと思って、ドツボにハマりました。要するに英語が良く分かってないという事実を再確認しただけだったのでした(はっはっは)
stringとtextは、ほとんどの場合同義語と考えて差し支えないのですが、命令の引数として使われる場合に、意味が異なることがあります。
例えば、次のスクリプトは、クリップボードにスタイル付きテキスト(styled text)が格納されている場合、動作に違いが見られます。
the clipboard as string
the clipboard as text
また、textは複数形もtextなので、パッと見ただけでは複数形か単数形かの区別がつきません。
複数形がstringsとなって、確実に区別のつくstringを主に使うことをお勧めします。
特に演算子には、豊富な表現が用意されています。初心者は勿論、かなりAppleScriptに手慣れてきた人でも始めてみる表現が多いのではないでしょうか。
is not greater than or equal toという冗長な表現が必要だったかどうかは怪しいのですが、Appleが本気で「自然言語(英語)と同じ感覚で使えるコンピュータ言語」を目指していることを感じられるのは確かです。
この表には、構文確認によって変換された後のもののみを掲載しています。実際は、省略語や同義語がさらに多く存在しますが、スクリプトを読む際には知っておく必要がないので、省略しました。
それから、Mac OS XのScriptEditor 2.0やXcode(Project Builder)は≠,≧,≦を正しく認識できないので、この同義語に置き換えてやる必要があります。
代表的な演算子 | 同義語 |
---|---|
= | is, is equal to |
≠ | is not, is not equal to |
> | is greater than, comes after, is not less than or equal to |
< | is less than, comes before, is not greater than or equal to |
≧ | is greater than or equal to, is not less than, does not come before |
≦ | is less than or equal to, does not come after |
starts with | begins with |
順序数は序数とも言われますが、物事の順番を表すための数字のことです。
次のスクリプトは、全て同じ意味です。
item 1 of {1, 2, 3, 4}
1st item of {1, 2, 3, 4}
first item of {1, 2, 3, 4}
front item of {1, 2, 3, 4}
以下は数字と序数の対応表です。
1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | -1 |
---|---|---|---|---|---|---|---|---|---|---|
1st | 2nd | 3rd | 4th | 5th | 6th | 7th | 8th | 9th | 10th | -1th |
first | second | third | fourth | fifth | sixth | seventh | eighth | ninth | tenth | last |
front | back |
通常、オブジェクトを指定する場合は「of 〜」を使いますが、「in 〜」や「〜's」という表現も使えます。
例えば、次のスクリプトは同じ意味です。
item 1 of {1,2,3,4}
item 1 in {1,2,3,4}
{1,2,3,4}'s item 1
ちょっと「〜's」の例が分かりにくかったかもしれません。次のように利用すると、だいぶ自然な表現になることが分かると思います。
でも、「〜's」を使うことはあまりないと思います。
set theRack to {1,2,3,4}
theRack's first item
ただし、例外的に非常に良く見かける表現に「〜's」が使われています。
実は、次のスクリプトは同じ意味です。
AppleScript's text item delimiters
text item delimiters of AppleScript's
また、「of me」と「my」は、「of 〜」と「〜's」の関係にあります。
ですから、次の3つのスクリプトは同じ意味になります(me'sなんていう、怪しげな表現を使っているスクリプトは見たことありませんが)
handlerX() of me
me's handlerX()
my handlerX()
また、「of it」と「its」も、「of 〜」と「〜's」の関係にあります。
ですから、次の3つのスクリプトは同じ意味になります。
handlerX() of it
it's handlerX()
its handlerX()
それから、直接引数がかける命令は、引数の前に書いても、後に書いても認識されます。
引数と命令の関係が分りにくくなるので、あまり使うべきではないと思いますが、他のオブジェクト指向言語に馴れている人のスクリプトには出て来がちなので、スクリプトを読む時に戸惑わないように、使えるという事は知っておいていいでしょう。
次のスクリプトは同じ意味です。
count "abc"
"abc" count
tellを使ってオブジェクトを指定することもできますが、これは「〜 of」や「〜's」と同義語ではありません。
一見、全く同じように見える次のスクリプトは、tellでないと動作しません。
tell application "Finder" to tell disk 1 to name
name of disk 1 of application "Finder"
これは、tellの場合、それ以後でtellで指定したアプリケーションの用語が利用できるようになるのに対し、ofではアプリケーションの用語利用の宣言にはならないからです。
もちろん、tellでアプリケーションを指定した後は、用語の利用が可能になっていますから、ofで書いてかまいません。というか、tell〜toでひたすらオブジェクトを指定しているスクリプトは、Appleのサイトにある「AppleScript入門」でしか見たことありません(記事は無くなっています2004-03-09)
入門記事で、こんなイレギュラーな書式を用いていいものか、かなり疑問です。
釈迦に説法だと思いますが、通常は、以下のように書きます。
tell application "Finder" to name of disk 1
documentなどの、主要なアプリケーションの用語は、AppleScript本体で定義されているので、tellブロックの外でも使えます。
とはいえ、あまり多用しない方がいいですが。
name of document 1 of application "QuoEdit"
同義語で解説するものでもないような気もしますが、流れで解説しました。
後で、独立したトピックスとして紹介するかも。
以下のような用語にも同義語がありますが、特に注意することはないと思います。
用語の種類 | 同義語 |
---|---|
フィルタ参照 | whose,where,that |
全要素参照 | every, 〜s(複数形) |
ハンドラ | on, to |
copy命令 | copy〜to, put〜into |
count命令 | count, number of |