:inline 機能を使用すると、list
または vector のカスタマイズタイプの途中に、可変個の要素を挿入できます。list または vector の指定に含まれるタイプ指定に
:inline t を追加することで利用します。
通常、list または vector
型指定の各エントリは、単一の要素型を記述します。しかし、エントリに :inline t
が含まれている場合、それに一致する値は包含するシーケンスに直接マージされます。例えば、そのエントリが3つの要素を持つリストに一致する場合、それらは全体のシーケンスの3つの要素となります。これは、バッククォート構文における
‘,@’ と同様です(バッククォート を参照)。
例えば、最初の要素が baz でなければならず、残りの引数が foo と bar を 0
個以上とするリストを指定するには、次のカスタマイズタイプを使用します。
(list (const baz) (set :inline t (const foo) (const bar)))
これは (baz)、(baz
foo)、(baz bar)、(baz foo
bar) といった値に一致します。
要素タイプが choice の場合、:inline を choice 自体ではなく、choice の代替パターン(の一部)で使用します。例えば、ファイル名で始まり、その後に記号 t または2つの文字列が続くリストにマッチさせるには、次のカスタマイズタイプを使用します:
(list file
(choice (const t)
(list :inline t string string)))
ユーザーが選択肢の1番目を選んだ場合、全体のリストは2つの要素を持ち、2番目の要素はtとなります。ユーザーが2番目の選択肢を選んだ場合、全体のリストは3つの要素を持ち、2番目と3番目は文字列である必要があります。
ウィジェットでは、インライン値が:match-inline要素を持つウィジェットに一致するかどうかを判定する述語を指定できます。