这个问题在这里已经有了答案:
What does `:_*` (colon underscore star) do in Scala?
(4 个回答)
5年前关闭。
我目前正在关注 Functional Programming In Scala
这是 apply
的伪实现在 List[A]
def apply[A](as: A*): List[A] =
if (as.isEmpty) Nil
else ::(as.head, apply(as.tail: _*))
如果我省略
: _*
在 as.tail: _*
, scala 提示类型不匹配,这是有道理的,因为 as.tail
是 Seq[A]
这里。但是
_*
是什么意思?到底在这里做什么?编辑::
正确的术语是 序列通配符
最佳答案
: _*
表示法只是告诉 Scala 编译器将您传递给方法的集合的元素(在参数中处理 : _*
的集合)视为已将它们一一传递到 varargs 方法中。例如,如果你有
def foo(x: Int*) = x.sum
val xs = Seq(1, 2, 3, 4)
然后
foo(xs: _*)
就像你打字一样工作
foo(1, 2, 3, 4)
关于Scala 在可变函数中下划线星号?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32900434/