我的lambda:
val streetNumber: Int = {
num: Int -> num / 4
}
我怎么会收到此错误:
error: type mismatch: inferred type is (Int) -> Int but Int was expected
val streetNumber: Int = {
^
我对代码块的了解是
Int
表示我正在返回Int
类型。Int
表示我已将num
的类型声明为Int
。 这些陈述中有什么不对吗?
答案 0 :(得分:1)
在这种情况下,您的变量类型Int
不正确,而是您要执行的操作:
val streetNumber: (Int) -> Int = {
num: Int -> num / 4
}
答案 1 :(得分:0)
声明:
val streetNumber: Int
表示streetNumber
的数据类型为Int
,而不是表示返回类型为Int
。
因此这与赋值冲突:
val streetNumber = { num: Int -> num / 4 }
在这些情况下,请信任推断的数据类型(Int) -> Int
变量streetNumber
不是引用整数值的变量,例如:val x: Int = 0
。
它是一个引用Lambda expression的变量,该变量返回整数值。
您可以像这样使用它:
val streetNumber = { num: Int -> num / 4 }
val x: Int = streetNumber(12)
println(x)
将打印
3
答案 2 :(得分:0)
您可以轻松地做到,
val streetNumber= {
num: Int -> num / 4
}
然后像这样称呼
val number=40
println(div(number))
这是做这件事的最简单方法。