Curlにはキーワード引数と残余引数という独特な引数を付与できます。
通常の引数
プロシージャやメソッド等の通常の引数では以下のようにします。
|| プロシージャの作成 {my-proc1 100} || 実行 |
キーワード引数(Keyword Argument)
Curlの持つキーワード引数とは、「引数 = 引数のデフォルト値」というように、プロシージャやメソッド等にセットします。以下に例を記載します。
|| プロシージャの作成 {define-proc public {my-proc2 i:int = 100}:void || 処理 } {my-proc2 i = 200} |
また、複数キーワード引数を指定することや通常の引数と混合させることができます。
|| プロシージャの作成 {my-proc3 “abc”, i = 200} |
キーワード引数の利点としては、キーワード引数の値をセットする必要がなければ省略できますし、順番が前後しても特に問題がありません。
残余引数(Rest Argument)
残余引数とは、引数に名前(変数)を持たない引数を、無制限に受け取ることができます。これは3つのピリオド”…”として指定します。また、”…:String”のように、型を指定することができます。
{define-proc public {my-proc4 …}:void } {define-proc public {my-proc5 i:int, …:String}:void |
プロシージャの中では以下のようにコンテナループでそれぞれの引数を順に取得することができます。
{define-proc public {my-proc6 …}:void {for v in … do {output v} } } {my-proc6 “abc”, “def”, 123, 1.0, true} |
ちなみに残余引数の数を算出するにはcount-argumentsマクロを利用します。例えば、{count-arguments …}のようになります。
詳細については、こちらを参照ください。