Он "разбрызгивает" 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*
указано выше).
_*
Тип аннотации покрыта «4.6.2 Повторные параметры» СЛС.
Последний параметр значения секции параметров может быть дополнен символом «*», например (..., x: T *). Тип такого повторяющегося параметра внутри метода является типом последовательности scala.Seq [T]. Методы с повторяющимися параметрами T * принимают переменное число аргументов типа T. То есть, если метод m с типом (p1: T1, ..., pn: Tn, ps: S *) U применяется к аргументам (e1, ..., ek), где k> = n, то m в этом приложении принято иметь тип (p1: T1, ..., pn: Tn, ps: S, ..., ps0S) U, причем k ¡n вхождений типа S, где любые имена параметров, кроме ps, являются новыми.Единственное исключение из этого правила - если последний аргумент помечен как аргумент последовательности с помощью аннотации типа _ *. Если m выше применяется к аргументам (e1, ..., en, e0: _ *), то тип m в этом приложении принимается равным (p1: T1, ..., pn: Tn, ps: scala .SEQ [S])