global 変数 [, 変数...]

引数(Parameters)

変数大域変数

解説(Note)

 大域(global)変数として変数を宣言する。この時、初期値は設定されないので、set命令(copy命令)で値を設定してやる必要がある。値が設定されていない変数を使おうとするとエラーになる。
 ハンドラの中でのみ値が保持される通常の変数を、局所(local)変数という。
 変数の定義は、命令ハンドラ利用者定義ハンドラ(位置渡しラベル渡し)、スクリプトオブジェクトの定義の頭、またはスクリプトのトップレベル(あらゆるハンドラの外)で行われる。

 トップレベルで宣言された大域変数は、明示的に宣言しなくても、スクリプト全体で大域変数として扱われる(例1を参照)
 ハンドラ内で宣言された大域変数は、他のハンドラでは、明示的に宣言しない限り、局所変数として扱われる(例2を参照)
 大域変数は、スクリプト終了後も保存される。
 詳しい変数の有効範囲(scope)については、各自検証しつつ使ってほしい。

【バグ情報】
 propertyで宣言した属性と名前が同じ大域変数を宣言した場合、両者の値は共有される。
 バグか仕様か微妙なところだが、少なくとも仕様ミスと考えた方がいいようだ。
 他にも意外な程、有効範囲が広く様々な場所に及ぶので、極力使わない方がいいのが大域変数である。

用例(Example)

  1. global x
    
    on run
    	try
    		set x to x + 1
    	on error
    		set x to 1
    	end try
    	display dialog x
    end run
  2. r()
    display dialog x
    s()
    
    on r()
    	global x
    	set x to 1
    end r
    
    on s()
    	display dialog x
    end s