例によって、こちらで勉強させてもらいました。
『on サブルーチン名()』〜『end サブルーチン名』がサブルーチン部です。
『on サブルーチン名( [パラメータ1, パラメータ2, ・・・] ) 』の『on』は『to』としても動作は同じです。パラメータを与えるときは『 ( ) 』内に(複数あるときは『, 』で区切って)記述します。
サブルーチン実行後の結果(値)を得るにはサブルーチン内に『 return値 』を記述します。
サブルーチンを使うメリットは、リピート文がどこからどこまでをしていているかが
わかりやすくなるということです。
反面、抜け出す事、サブルーチンの中の結果の値を取り出す事がむずかしいというデメリットもあります。
試してみましたが、上手く動きませんでしたので、やむを得ず普通のリピート文にしました。
リピート文で、時間を計測しそれをリストの最後尾に入れるという作業です。
変数 theListでは取り出せませんでしたので、AppleScript、Editorの結果欄の値を使用します。
複数回のテスト結果値のリストを一遍に調べることができましたので便利だと思います。
今回の構文の目的は、アプリケーション「テキストエディット」が
MacOS 10.8.2と10.6.8での起動時間の違いを調べるというものでしたが、
自分で書いた構文を良く見返してみると、AppleScriptで命令して何行かを処理する時間を
計っているだけに過ぎないなと思います。
しかし、その何行かの処理時間の差がOSの性能と言えなくもないので、
(苦しいいいわけ)
ベンチマークテストの一環としては、やむを得ないかなと考えています。
- –計測値をリストに入れる。
- –指定の回数だけ繰り返す。
- –まとめてクリップボードに書き出す。
- –もし起動していたら、終了させる。saving no とやりたいが無理。
- –念のため両方をOnyXで。
- –回数をカウント。
- –サブルーチン
- –最後にectoで表組
- display dialog “繰り返す回数を入力してください。“ default answer ““ buttons {“キャンセル“, “OK“} default button 2
- copy the result as list to {text_returned, button_pressed}
- set repKaisu to text_returned
- set theList to {}
- repeat repKaisu times
- –set pri_1 to my keisoku()–サブルーチング化失敗
- –on keisoku()
- tell application “TextEdit“
- quit
- end tell
- delay 3.0
- tell application “TextEdit“
- activate
- end tell
- –テキストエディットのバージョンを確認。10.8/1.8
- –OSAXのラップタイムを使用
- –http://www.macupdate.com/app/mac/36155/laptime
- –計測開始
- set tm to start timer
- –面倒なのでリストにしないでテキストエディットだけを指定
- tell application “TextEdit“
- activate
- end tell
- –計測停止、LapTimeの指定の書式。
- stop timer tm
- set theTime to result
- –ミリ秒の計測なので、1/1000に。
- set theTime to theTime / 1000
- –型変換
- set theTime to theTime as text
- –小数点以下をそろえるために、小数点の位置を調べる。
- offset of “.“ in theTime
- set DD to result
- –小数点以下を3桁に
- set theTime to text 1 thru (DD + 3) of theTime
- –これをアクティベート(前面に出さないと見えない。)
- tell application “AppleScript Editor“
- activate
- end tell
- –display dialog “起動に ” & theTime & ” 秒かかりました” buttons {“OK”} default button 1
- tell application “TextEdit“
- quit
- end tell
- set the end of theList to theTime
- –これを入れないと複数の値の保存が出来ない。
- set the theList to theList
- –return theList
- –end keisoku
- end repeat
ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー