コンパイル時引数
SPL コンパイラー (sc コマンド) は、コンパイル時に渡される引数をサポートします。
コンパイル時の引数には、SPL コード内部から次の 3 つのコンパイル時引数アクセス関数を通してアクセスできます。
rstring getCompileTimeValue(rstring name)
rstring getCompileTimeValue(rstring name, rstring default)
list<rstring> getCompileTimeListValue(rstring name)
これらの関数は、(関数の戻りの型と一致する) 適切な型の式が予期される場所であれば、SPL ファイル内の任意の場所に置くことができます。 最初の関数の getCompileTimeValue は、名前付き引数の値をストリングとして返します。 name 引数として渡されたストリングがコンパイル時にコンパイラー・コマンド行で指定されない場合は、コンパイル時エラーになります。 2 番目の関数の getCompileTimeValue は、名前付き引数の値をストリングとして返し、コンパイル時に引数が指定されない場合はデフォルト値をストリングとして返します。3 番目の関数の getCompileTimeListValue は最初の関数に似ていますが、こちらは値をコンマ付きストリングにする必要があります。ストリングはコンマで分割され、結果は list<rstring> として返されます。name 引数として渡されたストリングがコンパイル時にコンパイラー・コマンド行で指定されない場合は、コンパイル時エラーになります。 これらの関数に渡される name 引数は、評価可能なコンパイル時の式でなければなりません。
名前付き引数は、sc コマンドで <name>=<value> の形で指定されます。名前部分に文字 = が含まれていてはなりませんが、その以外の点ではフリー・フォームのストリングです。 これは、SPL コード内部からコンパイル時引数アクセス関数を呼び出すときに指定する name パラメーターと一致します。 コマンド行引数の値部分は、任意のストリングにすることができます。以下に例を示します。
sc -M my::App hello=a,b,c foo=bar
# getCompileTimeValue("foo") == "bar"
# getCompileTimeValue("fred", "wilma") == "wilma"
# getCompileTimeListValue("hello") == ["a","b","c"]