我想在一個高階函數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提到這個問題? –
我說*顯然*因爲解析器的工作方式(您的問題是語言語法)通常不會在發佈候選版和最終版本之間發生變化。所以,升級到穩定版本並不能解決這個問題,而是會帶給你整體的穩定性。 –