相关疑难解决方法(0)

什么`:_*`(冒号下划线星)在Scala中做什么?

我从这个问题得到以下代码:

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 pattern-matching

186
推荐指数
4
解决办法
4万
查看次数

什么:_*从Scala调用Java vararg方法时做什么?

可能重复: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中的定义在哪里?

java scala

24
推荐指数
1
解决办法
7734
查看次数

标签 统计

scala ×2

java ×1

pattern-matching ×1