サブルーチン(subroutines)というのは、ユーザー定義コマンド群のハンドラ(handlers)のことです。サブルーチンは他のプログラム言語で functions、methods や procedures と呼ばれるものと似ています。
なお、ハンドラ(handlers)とは、コマンドやエラーメッセージに反応して AppleScriptが実行するステートメントのことです。
フォーマットは次のようになります。
『on サブルーチン名()』~『end サブルーチン名』がサブルーチン部です。
『on サブルーチン名( [パラメータ1, パラメータ2, ・・・] ) 』の『on』は『to』としても動作は同じです。パラメータを与えるときは『 ( ) 』内に(複数あるときは『, 』で区切って)記述します。
サブルーチン実行後の結果(値)を得るには、サブルーチン内に『 return 値 』を記述します。
AppleScript 002 のサンプルスクリプトをサブルーチンを用いて記述してみました。
Handlers
(補足資料)サブルーチンの考え方について
・サブルーチン化のメリットとして、次のことが挙げられます。
(1)スクリプトの構造が分かりやすくなる
(2)デバッグ・改変がしやすくなる
(3)サブルーチン部の使い回しができる
・サブルーチンの機能としては今のところ下図のように理解しています。
ほかに思いついたら追記します。
前述のAppleScript 002 サンプルスクリプトをサブルーチン化したものは この図の2. の機能ですね。
これからは3. の処理が多くなりそうに思っています。
<環境>
Mac OS X バージョン10.4.1 標準
(スクリプトエディタ バージョン2.1)
なお、ハンドラ(handlers)とは、コマンドやエラーメッセージに反応して AppleScriptが実行するステートメントのことです。
フォーマットは次のようになります。
my サブルーチン名() -- 実行部=ハンドラ
on サブルーチン名( [パラメータ1, パラメータ2, ・・・] )
ステートメント部(命令を記述)
・
・
・
[ return 値 ]
end サブルーチン名
『on サブルーチン名()』~『end サブルーチン名』がサブルーチン部です。
『on サブルーチン名( [パラメータ1, パラメータ2, ・・・] ) 』の『on』は『to』としても動作は同じです。パラメータを与えるときは『 ( ) 』内に(複数あるときは『, 』で区切って)記述します。
サブルーチン実行後の結果(値)を得るには、サブルーチン内に『 return 値 』を記述します。
AppleScript 002 のサンプルスクリプトをサブルーチンを用いて記述してみました。
--サブルーチンを実行し、結果を変数kotae3に保持する
set kotae3 to my test()
--"OK"を表示する
display dialog kotae3
--サブルーチン部
on test()
--『display dialog "ようこそ!!"』を実行し、その結果を変数kotae(内容は{button returned:"OK"})に保持する
set kotae to (display dialog "ようこそ!!")
--変数kotae(内容は{button returned:"OK"})から"OK"を取り出す
set kotae2 to the button returned of kotae
return kotae2
end test
Handlers
(補足資料)サブルーチンの考え方について
・サブルーチン化のメリットとして、次のことが挙げられます。
(1)スクリプトの構造が分かりやすくなる
(2)デバッグ・改変がしやすくなる
(3)サブルーチン部の使い回しができる
・サブルーチンの機能としては今のところ下図のように理解しています。
ほかに思いついたら追記します。
前述のAppleScript 002 サンプルスクリプトをサブルーチン化したものは この図の2. の機能ですね。
これからは3. の処理が多くなりそうに思っています。
<環境>
Mac OS X バージョン10.4.1 標準
(スクリプトエディタ バージョン2.1)
今回はサブルーチンのことで
見させていただきました。
AppleScriptの構文がわからないときは
訪問し参考にさせていただいています。
当方記事にトラックバックを張っておきます。
よろしければご承認ください。
イメージ図http://homepage.mac.com/kaz_t/image/as/as003flow.png
を引用させていただきます。
ちょっとサブルーチン(ハンドラ)の勉強をしたいものですので。
よろしくお願いします。