Это "сплитс" 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 Повторяющиеся параметры» SLS.
Последний параметр значения раздела параметров может быть заменен на «*», например (..., 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])