[run]

解説(Note)

 アプリケーションが起動した時に送られるメッセージを受けるハンドラ。
 メッセージはrun命令によっても発生する。
 既に起動しているアプリケーションをダブルクリックした場合は、runメッセージは送られず、reopenメッセージが送られreopenハンドラが受け取る。

 具体的には、スクリプトを実行した場合に、このハンドラが実行される。
 もっとも使用頻度の高いハンドラなので、ハンドラの外に書かれたスクリプトは、runハンドラのスクリプトとして処理される。これを暗黙のrunハンドラと言う。
 runハンドラを書いた場合、runハンドラの外にスクリプトを書くことはできない。

【バグ情報】

 トップレベルのrunハンドラで使われた変数は全て大域変数として定義されてしまう。

 まず問題となるのは、大域変数はスクリプトに記録されるため、次回起動時にメモリが足りなくなって起動できないなどの致命的な状況に陥ることがある。これを回避するには、runハンドラでは処理を行わず、すぐに別の利用者定義ハンドラを呼ぶ(例2)等の対策が必要になる。
 少量のデータの処理では、そこまで神経質になる必要は無い。

 次に問題になるのは、runハンドラと同じ大域変数が別のハンドラで定義された場合。既にrunハンドラで大域変数として定義されているので、変数の内容が共有されてしまうという問題が起こる。

用例(Example)

  1. on run
    	beep
    end run
  2. on run
    	subRun()
    end run
    
    on subRun()
    	beep
    end subRun