scala - 在 Scala 中从 seq 到 _*

标签 scala variadic-functions

有谁知道我们如何以自动方式从任何 Seq 转换为 _*?每次我们有一个 Seq 并且方法使用 vararg 类型的参数时,强制类型是非常麻烦的。

def mean[T: Numeric](elems: T*): Double
...
elems = Seq(1.0, 2.0, 3.0)
mean(elems) // this doesn't compiles
mean(elems: _*) // this compiles but it is cumbersome

最佳答案

这是唯一的方法。这就是为什么可以说可变参数最好只用在库的公共(public)接口(interface)上的原因,即便如此,尤其是当您认为调用者将使用字面指定的元素而不是集合进行调用时。如果一个方法可能会在集合参数上被调用,可变参数可能会适得其反,正如您已经注意到的那样,它的目标是减少语法噪音。

关于scala - 在 Scala 中从 seq 到 _*,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28517486/

相关文章:

java - Java 或 Apache Commons 中是否有可变参数空值检查功能?

java - java 执行的 scala jar 文件 - cp 与 jar

json - 使用 json4s 序列化 AnyVal 的序列

scala - 是否有一个类似于TestNg的scalaTest机制DependOnMethods批注

c - 在没有 stdarg 的情况下访问可变参数函数参数

java - 调用哪种方法? (整数... a) 与 (int a, int b)

java - 使用可变参数 (varargs) 的方法重载

java - 如何在 Java/Scala 中创建 PDF/DOCX 文件?

scala - sbt:如何运行集成测试

c++ - 类模板 "std::pair": Passing std pair as arguments in varidiac function 的参数太少