它不返回int "10",而是返回一个奇怪的字符串,如"Function1〈java. lang. Integer,java. lang. Integer〉"
源代码:
`
fun main(args: Array<String>) {
println(Bird.a { 10 })
}
class Bird() {
companion object {
fun a(b: @JvmSuppressWildcards () -> Int): (Int) -> Int {
return { b() }
}
}
}
`
我得到的输出是函数1〈java. lang. Integer,java. lang. Integer〉
1条答案
按热度按时间rsaldnfx1#
它不是返回Int,而是返回一个接受Int的lambda:(Int)-〉Int。如果希望函数返回Int,请将返回类型从:
(Int) -> Int
至:Int
,您需要将return { b() }
更改为return b()
,所以最终的函数将是这样的:
如果你还想得到一个lambda并且需要从它那里得到Int,你需要像调用其他函数一样调用它,这里你打印的是lambda本身:
但需要调用它并为它传递Int,以便打印结果,如下所示:
您需要传递一个Int,否则它将无法工作,但您没有在代码中使用该Int,因此您可以通过将返回类型从
(Int) -> Int
更改为() -> Int
来删除它。或者您可以这样使用它: