splice (マクロ)
パッケージ: CURL.LANGUAGE.COMPILER

コンテナを受け取り、コンテナの要素を引数のリストとして返します。

シグネチャ

{splice container-name}
container-name: はコンテナ名です。配列、文字列、セット、ハッシュ テーブル、Arguments オブジェクトおよび残余引数配列など、Curl プログラミング言語のほとんどのコンテナで splice を使用することができます。

説明

Curl には、コンテナを受け取り、引数リストとしてそのコンテナの要素を返す、splice と呼ばれる特別な式があります。この式により、コンテナの要素を関数呼び出しの引数として容易に指定することができます。たとえば、splice 式を使用して、配列の全要素を関数呼び出しの引数として含めることができます。また、splice 式を使用して、関数に対する Arguments オブジェクトまたは残余引数配列 (...) と同様にコンテナの内容を渡すこともできます。

splice 式を含む Curl コードをコンパイルすると、Curl コンパイラは splice 式を引数リストのフォームでコンテナの要素に置き換えます。splice を使用する呼び出しは、通常は他の呼び出しに比べてより時間がかかります。

ただし、splice 式は、パラメータ リストのコンテキストでしか使用できないことに注意してください。それを汎用的に使用してコンテナの要素にアクセスすることはできません。

splice 式は、関数呼び出しの引数において、最も一般的な 2 つのコンテナ、残余引数配列(...) と Arguments オブジェクトで使用することができます。これらの引数コンテナのいずれかで splice 式を使用すると、引数の順序を保持して位置引数およびキーワード引数を返します。

特に引数を保持するように設計されていないコンテナで使用すると、splice 式は位置引数として要素のみを返します。これは、例えば、ハッシュテーブルのキーがスプライスのキーワード引数名として使用されていないことを意味します。

次の例は、位置引数およびキーワード引数が含まれる Arguments オブジェクトと併用する場合の splice の使用方法を示しています。


{value
    || Define an Arguments container and initialize it with
    || a number of positional and keyword arguments.
    let args:Arguments = {Arguments background = "beige",
                                    color = "blue",
                                    "Here...",
                                    "comes..."}

    || Define a VBox and initialize it with the return value
    || from a call to the spaced-vbox procedure.
    || A "splice" expression includes the arguments from the
    || above Arguments object.
    let vb:VBox = {spaced-vbox
                      "Hello world!",
                      {splice args},
                      "Curl!"}

    || Display the VBox
    vb
}


次の例は、配列と併用する場合の splice の使用方法を示しています。


{value
    || Define an array of strings and initialize it with
    || three strings.
    let some-strings:StringArray =
        {new StringArray, "Here...", "comes...", "Curl!"}

    || Define a VBox and initialize it with the return value
    || from a call to the spaced-vbox procedure.
    || A "splice" expression includes the elements of the above
    || array as arguments in the procedure call.
    let vb:VBox = {spaced-vbox
                      "Hello world!",
                      {splice some-strings}}

    || Display the VBox.
    vb
}