3 回答

TA贡献1836条经验 获得超5个赞
new Elem(prefix: String, label: String, attributes: MetaData, scope: NamespaceBinding, child: Node*)
new Elem(prefix, label, attributes, scope, child1, child2, ... childN)
child1
, child2
1Node*
_*
参数部分的最后一个值参数可以是由“*”(例如(.,x:t*)连接的fi)。方法中这种重复参数的类型是序列类型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,类型S的k‘n出现,其中超过ps的任何参数名称都是新的。 这个规则的唯一例外是,如果最后一个参数通过_*类型注释被标记为序列参数。如果上面的m被应用于参数(E1,。....,en,e0:*),则该应用程序中的m类型为(p1:t1,。....,pn:TN,PS:scala.Seq[S])

TA贡献1878条经验 获得超4个赞
child ++ newChild
-序列 :
-类型归属,帮助编译器理解的提示,该表达式具有什么类型? _*
-接受任何值+vararg运算符的占位符
child ++ newChild : _*
Seq[Node]
Node*

TA贡献1845条经验 获得超8个赞
val x : Seq[Seq[Int]] = Seq(Seq(1),Seq(2))def f(arg: Seq[Any]*) : Int = { arg.length}f(x) //1 as x is taken as single argf(x:_*) // 2 as x is "unpacked" as a Seq[Any]*
:_*
:_*
添加回答
举报