条件文
条件文を利用すると、特定の条件下のみで行われるアクションや、その他の条件下で行われるアクションの実行をスクリプトに選択させることができます。
if ... then ... else ...
挙動:すべての形態のif文は、条件式を評価します。条件式は、必ず論理値(true/false、またはその等価値であるyes/noもしくはon/offのいずれか)として評価されます。空の値もfalseとして扱われます。条件がtrue(または、yesもしくは on)の場合、SenseTalkはthenの後にある文または文リストを実行します。条件がfalse(または、no、offもしくは空)の場合、SenseTalkはelse(ある場合)の後にある文または文リストを実行します。
if文は、次のどの形態でも取ることができます。
1行
構文:
if 条件 then 文
if 条件 then 文 else 文
例:
if true then put "Yes!" // 常に「Yes!」を出力します
例:
if balance < 1000 then put "The balance is getting low"
例:
if the repeatIndex is greater than 5 then LogError "There is a problem." // repeatindex()関数をrepeatループ内で使用すると、repeatループの現在のイテレーションを追跡します
例:
put 4..10 into numList // リスト'(4,5,6,7,8,9,10)'を作成します
repeat with each item of numList // リスト内の各アイテムを基に繰り返しを行います
if it is an even number then log it // 現在のアイテムの値が偶数かどうかをチェックし、偶数であればその値をログします
end repeat
複数行に1文
構文:
if 条件
then 文
if 条件
then 文
else 文
例:
put the date into dateoftransaction // 変数に現在の日付を格納します
if dateoftransaction is between date("January 1") and date("June 30")
then
put "First half" into transactionperiod
else
put "Second half" into transactionperiod
log transactionperiod
複数文ブロック
構文:
if 条件 then
文リスト
end if
if 条件 then
文リスト
else
文リスト
end if
例:
if myString contains "testcase" then
delete ")" from myString
delete "(" from myString
log myString
end if
例:
If imagefound("on")
then
Click foundimagelocation() // 先の画像"on"が見つかった位置をクリックします
else
Click "off"
end if
連鎖条件
連鎖条件に示すこの最後の形態では、連続した相互排他条件をテストすることができます。任意の数の条件をテストするには、必要な数だけelse ifブロックを連鎖させ、その後にテスト条件のどれにも合致しなかったケースをキャッチするelseブロックを続け(任意)、end ifで閉じます。
構文:
if 条件1 then
文リスト
else if 条件2 then
文リスト
end if
if 条件1 then
文リスト
else if 条件2 then
文リスト
else
文リスト
end if
複数文ブロックや連鎖条件においては、希望であれば、行の最後のthenを省略して簡潔にすることもできます。
例:
if imageFound(image:"DashHome",waitFor:0)
Click "DashHome"
else if imageFound(image:"StartHome",waitFor:0)
TypeText WindowsKey,"r"
WaitFor 8, "RunLine"
else
throw "Image not found", "Desktop not visible." // 上の2つの条件のどちらも満たさない場合に例外を投げます
end if
end if