Ele "divide" 1 a sequência.
Veja a assinatura do construtor
new Elem(prefix: String, label: String, attributes: MetaData, scope: NamespaceBinding,
child: Node*)
que é chamado como
new Elem(prefix, label, attributes, scope,
child1, child2, ... childN)
mas aqui há apenas uma sequência, não child1
, child2
etc., portanto, isso permite que a sequência de resultados seja usada como entrada para o construtor.
Feliz codificação.
1 Isso não tem um nome atraente no SLS, mas aqui estão os detalhes. O importante a ser obtido é que ele altera como o Scala vincula os argumentos ao método com parâmetros repetidos (conforme indicado Node*
acima).
A _*
anotação de tipo é abordada em "4.6.2 Parâmetros repetidos" do SLS.
O último parâmetro de valor de uma seção de parâmetro pode ser sufixo por "*", por exemplo (..., x: T *). O tipo de um parâmetro repetido dentro do método é o tipo de sequência scala.Seq [T]. Métodos com parâmetros repetidos T * recebem um número variável de argumentos do tipo T. Ou seja, se um método m com o tipo (p1: T1,.., Pn: Tn, ps: S *) U é aplicado aos argumentos (e1,.., Ek) em que k> = n, então m é tomado nesse aplicativo para ter o tipo (p1: T1,..., pn: Tn, ps: S,.., ps0S) U, com k ¡n ocorrências do tipo S em que quaisquer nomes de parâmetros além de ps são novos.A única exceção a essa regra é se o último argumento estiver marcado como um argumento de sequência por meio de uma anotação do tipo _ *. Se m acima for aplicado aos argumentos (e1,..., En, e0: _ *), o tipo de m nesse aplicativo será considerado (p1: T1,..., Pn: Tn, ps: scala .Seq [S])