我从这个问题得到以下代码:
def addChild(n: Node, newChild: Node) = n match {
case Elem(prefix, label, attribs, scope, child @ _*) => Elem(prefix, label, attribs, scope, child ++ newChild : _*)
case _ => error("Can only add children to elements!")
}
Run Code Online (Sandbox Code Playgroud)
除此之外,其中的所有内容都非常清晰: child ++ newChild : _*
它有什么作用?
我明白有Seq[Node]与另一个连接Node,然后呢?怎么: _*办?
可能重复:Scala
中:_*(冒号下划线明星)做了什么?
我正在使用REPL来调用带有Scala数组的Java vararg方法.
如果我这样做,我会收到错误:
case class Person(name: String, age: Int)
val array = Array(classOf[String], classOf[Int])
Person.getClass.getMethod("apply", array)
Run Code Online (Sandbox Code Playgroud)
但如果我这样做,那么它的工作原理:
Person.getClass.getMethod("apply", array:_*)
Run Code Online (Sandbox Code Playgroud)
我的问题是:_*做什么的?它在Scala API中的定义在哪里?