if〜then文は、通常ifとthenの間に判定文を置きますが、判定文は真偽値を返す式です。つまり正確には判定文が必要なのではなく、真偽値が必要といえます。
真偽値という事は、if true thenかif false thenのどちらかであるともいえます。
つまり、次の
set true to theBoolean
if theBoolean = true then display dialog "true です"
というスクリプトは、以下のように書いても同じ働きをします。
set true to theBoolean
if theBoolean then display dialog "true です"
また、次の
set false to theBoolean
if theBoolean = false then display dialog "false です"
というスクリプトは、以下のように書いても同じ働きをします。
変数の前にnot演算子を置いて、真偽値を反転させているところがミソです。
set false to theBoolean
if not theBoolean then display dialog "false です"
ということは、真偽値を返す属性ならば、ifの中に直接書く事で判定できるということです。
set theFile to choose file
tell application "Finder"
if locked of theFile then display dialog "ロックされています"
end tell
もちろんnot演算子で値を反転させる事もできます。
set theFile to choose file
tell application "Finder"
if not locked of theFile then display dialog "ロックされていません"
end tell
属性でも大丈夫ならば、当然ながら真偽値を返す命令でも可能です。
真偽値を返すOSAX命令やアプリケーション命令はあまり多くありませんが、自分で作る利用者定義命令なら話は別です。
if isLacky() then
display dialog "今日は良い事ありそう"
else
display dialog "今日は普通の日"
end if
on isLacky()
return (random number 2) = 0
end isLacky
ハンドラ名を分かりやすいものにしておけば、スクリプトの可読性も上がります。
repeat文でも判定文を置くタイプのものは、真偽値を返す変数・属性・命令に置き変える事ができます。
以下のスクリプトではtheBooleanがtrueになったらループが終了しますから、ダイアログに"true"が表示される事はありません。
set theBoolean to false
repeat until theBoolean
if theBoolean then
display dialog "true"
else
display dialog "false"
end if
set theBoolean to (random number 2) = 0
end repeat
すぐに応用できるようにはならないかもしれませんが、覚えておくと便利でしょう。
「トグル(ON/OFF)処理」で使っていますので、参考にして下さい。