HyperCard tribute

グローバル変数


 通常の変数はハンドラの終了と共に消滅してしまいます。変数を使用したハンドラ以外でもその変数を使用したい場合にグローバル変数を用います。
 1 
 2 
 3 
 4 
 5 

 6 
 7 
 8 
 9 
10 
on mouseUp
  put 0 into num
  main
  put num
end mouseUp

on main
  repeat with i=1 to 10
    put num+1 into num
  end repeat
end main

 上のスクリプトでは、エラーが出てしまいます。その原因は、値の入ってない num に数字1をプラスしたからです。すなわち、mouseUpハンドラで変数 num に代入したのですが、それがmainハンドラを呼び出したときに消滅してしまったのです。この通常の変数の事をローカル変数と呼びます。
 エラーを出なくするためには、ここで変数 num をグローバル変数として宣言します。グローバル変数宣言をすることで、変数 num はグローバル変数宣言をしたハンドラで使用可能となります。
 1 
 2 
 3 
 4 
 5 
 6 

 7 
 8 
 9 
10 
11 
12 
on mouseUp
  global num
  put 0 into num
  main
  put num
end mouseUp

on main
  global num
  repeat with i=1 to 10
    put num+1 into num
  end repeat
end main

 グローバル変数宣言は、その変数を使用したいハンドラ全てで宣言する必要があります。グローバル宣言は、変数を使用する前にしてください。
 もし、mainハンドラでグローバル変数宣言をしなければ、変数 num はグローバル変数として扱われないので、値が入ってないということでエラーとなってしまいます。