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..符号中.
| 归档时间: |
|
| 查看次数: |
278 次 |
| 最近记录: |