【发布时间】:2013-10-22 13:18:52
【问题描述】:
我想要更高阶函数中的隐式参数,例如:
func(arg1) { 隐式 (x, y) => x * y }
但是编译器说:
错误:预期的定义开始 val a = 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 声明为“隐式 x => ...”。
似乎没有办法声明两个隐式参数。
【问题讨论】:
-
它显然不能解决问题,但你为什么不更新到 final 版本的 Scala,例如2.10.2 还是 2.10.3?
-
没有理由 => 我更新了 2.10.2。 “显然”是什么意思? Scala Prog Lang Spec 提到了这个问题?
-
我说 显然 因为解析器的工作方式(您的问题是语言语法)通常不会在候选版本和最终版本之间发生变化。因此,升级到稳定版本并不能解决此问题,而是会为您带来整体稳定性。
标签: scala