CodeMode (メソッド・キーワード)
使用法
メソッドの実装方法を指定するには、以下の構文を使用します。
Method name(formal_spec) As returnclass [ CodeMode=codemode ]
{ //implementation }
codemode は以下のいずれかになります。
-
call — このメソッドは、ルーチン呼び出しのエイリアスです (従来のコードを囲むために使用します)。
-
code (既定) — このメソッドは、コード行として実装されます。
-
expression — このメソッドは、式として実装されます。
-
objectgenerator — このメソッドは、メソッド・ジェネレータです。
このキーワードには、generator という値があります。これは、以前に使用されていたキーワードで、従来の非オブジェクト・ベースのメソッド・ジェネレータを使う必要があることを示しています。この値は、従来のバージョンとの互換性を保つ目的にのみ残されています。新しいアプリケーションでは objectgenerator を使用する必要があります。
詳細
このキーワードは、任意のメソッドの実装方法を指定します。
通常、メソッドは 1 行以上の行のコードを使用して実装します。これは、CodeMode の既定値の code で指定されます。この場合、メソッド実装は 1 行以上のコードになります。
一部の単純なメソッドは、expression メソッドとして実装できます。クラス・コンパイラは、このメソッドに対する呼び出しを、式を含むインライン・コードと置換することもあります。この場合、メソッド実装は (no Quit または Return 文とあわせて) 単純な式となります。
呼び出しメソッドは、ルーチンのラッパです。この場合、メソッド実装はルーチン名とタグ名になります。
メソッド・ジェネレータは、クラスのコンパイル時にクラス・コンパイラによって実行されるプログラムです。これは、任意のメソッドに対する実際の実装を生成します。この場合、メソッド実装はメソッド・ジェネレータ用のコードとなります。"クラスの定義と使用" の "メソッド・ジェネレータとトリガ・ジェネレータの定義" を参照してください。
既定値
CodeMode キーワードの既定値は、code です。
例
/// An expression method
Method Double(val As %Integer) As %Integer [ CodeMode = expression ]
{
val * 2
}
/// A Method generator
Method GetClassName() As %String [ CodeMode = objectgenerator ]
{
Do %code.WriteLine(" Quit """ _ %class.Name _ """")
Quit $$$OK
}