シーケンスを「スプラット」1します。
コンストラクタの署名を見てください
new Elem(prefix: String, label: String, attributes: MetaData, scope: NamespaceBinding,
child: Node*)
と呼ばれる
new Elem(prefix, label, attributes, scope,
child1, child2, ... childN)
しかし、ここでの唯一のシーケンスは、存在しないchild1
、child2
など、これは結果シーケンスはコンストラクタへの入力として使用することができます。
ハッピーコーディング。
1 SLSにはかわいらしい名前はありませんが、詳細は次のとおりです。取得する重要なことは、Scalaが(Node*
上記で示したように)パラメーターが繰り返されるメソッドに引数をバインドする方法を変更することです。
_*
型注釈は、 SLSの「4.6.2繰り返しパラメータ」で覆われています。
パラメータセクションの最後の値のパラメータには、「*」を付けることができます(例:(...、x:T *))。メソッド内のそのような繰り返しパラメーターの型は、シーケンス型scala.Seq [T]です。繰り返しパラメーターT *を持つメソッドは、タイプTの可変数の引数を取ります。つまり、タイプ(p1:T1、。。。、pn:Tn、ps:S *)Uのメソッドmが引数(e1、。。。、ek)に適用され、ここでk> = nの場合、mはそのアプリケーションでは、タイプ(p1:T1 、.。。、pn:Tn、ps:S 、.。。、ps0S)Uを持ち、psを超えるパラメーター名が新しいタイプSのk¡この規則の唯一の例外は、最後の引数が_ *型注釈を介してシーケンス引数であるとマークされている場合です。上記のmが引数(e1、。。。、en、e0:_ *)に適用されている場合、そのアプリケーションのmのタイプは(p1:T1、。。。、pn:Tn、ps:scalaであると解釈されます。 .Seq [S])