「関数」の版間の差分
編集の要約なし |
|||
88行目: | 88行目: | ||
PrintAllArgs(); | PrintAllArgs(); | ||
//出力:(何も出力されません) | //出力:(何も出力されません) | ||
=スコープ= | |||
関数は、変数と同じように、そのスコープ内で一意な名前である必要があります。スコープの範囲内では、基本的に同じ名前の関数を宣言することはできませんし、反対にスコープの外に出ると、その範囲内で定義した関数は使用できません。しかし、すでに定義された関数がオーバーライド可能属性を持っている場合は、<code>override</code>修飾子を使ってその関数を上書きできます。次に例を示します。 | |||
function virtual SayHello() | |||
{ | |||
print(“Hello,World”); | |||
} | |||
SayHello();//出力例:Hello,World | |||
function override SayHello() | |||
{ | |||
print(“Hello,Bonjur”); | |||
} | |||
SayHello();//出力例:Hello,Bonjur | |||
その関数を、現在のスコープの範囲外で使用できるようにするには、その関数に<code>global</code>修飾子を使用することそれをグローバル関数として宣言する必要があります。次に例を示します。 | |||
function RegisterGlobalFunction() | |||
{ | |||
function global SayHello() | |||
{ | |||
print(“Hello,World”); | |||
} | |||
} | |||
SayHello();//出力例:Hello,World | |||
=拡張メソッド= | =拡張メソッド= | ||
拡張メソッドを使用すると、新規に型を作成することなく既存の型にメソッドを追加できます。拡張メソッドに使用する関数はグローバル関数である必要があり、現在の型の変数が代入される引数に<code>this</code>キーワードを使用します。 | 拡張メソッドを使用すると、新規に型を作成することなく既存の型にメソッドを追加できます。拡張メソッドに使用する関数はグローバル関数である必要があり、現在の型の変数が代入される引数に<code>this</code>キーワードを使用します。 |