我正在尝试将 lambda 表达式分配给以下变量:
val aba : ((Int) -> Double) -> ((Int) -> Double)
Run Code Online (Sandbox Code Playgroud)
我试图的方式:
aba = {(b: (Int -> (Double))-> {x: Int -> 5 - 2 * b(x)} }
Run Code Online (Sandbox Code Playgroud)
但我收到了不同的错误,例如:
我知道,如果我将省略(Int -> (Double)并只留下 b ,它会起作用:
aba = {b -> {x: Int -> 5 - 2 * b(x)} }
Run Code Online (Sandbox Code Playgroud)
但是为什么我不能显式地写参数呢?有人能告诉我是什么问题吗?
aba = { (b: (Int -> (Double)) -> { x: Int -> 5 - 2 * b(x) } }
Run Code Online (Sandbox Code Playgroud)
不正确,因为您缺少右括号(错误 1)。修复后:
aba = { (b: Int -> (Double)) -> { x: Int -> 5 - 2 * b(x) } }
Run Code Online (Sandbox Code Playgroud)
你遇到了错误 2。
b在这种情况下,声明周围的括号是不正确的语法。
你告诉编译器你想解构lambda 的参数。但该类型不支持,因为它没有component1()功能。
aba = { b: Int -> (Double) -> { x: Int -> 5 - 2 * b(x) } }
Run Code Online (Sandbox Code Playgroud)
应该管用。
注意:您可以省略类型声明的原因b是编译器可以推断类型,因为它aba从声明中知道类型。
| 归档时间: |
|
| 查看次数: |
89 次 |
| 最近记录: |