具有部分应用函数的变量参数

rai*_*tin 2 scala variadic-functions partialfunction

我有以下代码的编译问题.

object Main {
    def main(args:Array[String]) = {
      def collectBigger(median:Int)(values:Int*) = values.filter { _ > median }
      val passedRanks = collectBigger(5)_
      //this compiles
      println(passedRanks(Seq(5,9,5,2,1,3)))
      //this doesn't
      println(passedRanks(5,9,5,2,1,3))
    }
}
Run Code Online (Sandbox Code Playgroud)

该示例的灵感来自com.agical.gsl,这是一个swala的scala适配器.我假设它在scala 2.8之前使用了scala功能.

错误是too many arguments for method apply: (v1: Seq[Int])Seq[Int] in trait Function1和变量参数如何传递给部分应用函数有关.

感谢您提供的任何提示.

Dim*_*ima 10

简单来说,你可以在scala中使用varargs 方法,但不能使用varags 函数.为什么?好吧,所有功能都有一个FunctionN[T1..TN,R]类型.在你的情况下,它是Function1[Seq[Int], Seq[Int]].

"varargs函数"根本没有类型,因此无论何时将方法转换为函数,都必须将其置于Seq..符号中.