gpt4 book ai didi

scala - 具有部分应用函数的可变参数

转载 作者:行者123 更新时间:2023-12-02 06:15:09 27 4
gpt4 key购买 nike

我在以下代码上遇到编译问题。

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))
}
}

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

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

感谢您提供的任何提示。

最佳答案

简单地说,您可以在 Scala 中使用可变参数方法,但不能使用可变参数函数。为什么?好吧,所有函数都有一个 FunctionN[T1..TN,R] 类型。在您的例子中,它是 Function1[Seq[Int], Seq[Int]]

“varargs 函数”根本没有类型,因此无论何时将方法转换为函数,都必须将其脱糖为 Seq.. 表示法。

关于scala - 具有部分应用函数的可变参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37526385/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com