我想在一个高阶函数IMPLICIT指定参数时,像:如何在高阶函数中声明隐式参数?
FUNC(ARG1){隐式的(X,Y)=> X * Y}
但是,编译器说:
错误:定义 val的预计开始一个= FUNC( “2”, “4”){隐式的(X,Y)=> ^
- Java版本 “1.7.0_40”
- Scala的ç颂亚军版本2.10.2-RC2 - 版权所有2002至2013年,LAMP/EPFL
可运行的代码示例:
object Test extends App {
new Test().run
}
class Test {
def run = {
val a = func("2", "4") { (x, y) => // It's OK
x * y
}
println("a: " + a)
val b = gunc("2", "4") { implicit x => { implicit y => // It's OK
x * y
}}
println("b: " + b)
}
def func(x: String, y: String)(f: (Int, Int) => Int) = f(x.toInt, y.toInt)
def gunc(x: String, y: String)(g: Int => Int => Int) = g(x.toInt)(y.toInt)
def hunc(x: String, y: String)(h: Tuple2[Int, Int] => Int) = h((x.toInt, y.toInt))
}
[添加评论]
我不知道...
我们可以用一个arg声明为“implicit x => ...”。
看来没有办法声明两个隐式参数。
显然,它不会解决问题,但你为什么不更新到** **最终斯卡拉的版本,例如2.10.2或2.10.3? –
没理由=>我更新了2.10.2。 '明显'意味着什么? Scala Prog Lang Spec提到这个问题? –
我说*显然*因为解析器的工作方式(您的问题是语言语法)通常不会在发布候选版和最终版本之间发生变化。所以,升级到稳定版本并不能解决这个问题,而是会带给你整体的稳定性。 –