xia*_*ang 10 generics lambda type-parameter kotlin
我可以写lambda id_Int和id_Boolean显式类型.我可以identity用类型参数编写函数.我可以用类型参数写lambda吗?
fun testFuncInt(f: (Int) -> Int): Int = f(1) + 2
val id_Int = { x: Int -> x }
fun testFuncBoolean(f: (Boolean) -> Boolean): Boolean = !f(false)
val id_Boolean = { x: Boolean -> x }
fun <T> identity(x: T) = x
fun main(args: Array<String>) {
println(testFuncInt(id_Int))
println(testFuncInt(::identity))
println(testFuncBoolean(id_Boolean))
println(testFuncBoolean(::identity))
}
Run Code Online (Sandbox Code Playgroud)
Kotlin不支持声明泛型属性而不在类级别声明该类型(另请参阅),但您可以使用返回与所需类型对应的lambda的函数来执行此操作:
fun main(args: Array<String>) {
println(testFuncBoolean(id()))
println(testFuncInt(id()))
}
fun <T> id(): (T) -> T = { it }
fun testFuncInt(f: (Int) -> Int): Int = f(1) + 2
fun testFuncBoolean(f: (Boolean) -> Boolean): Boolean = !f(false)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3418 次 |
| 最近记录: |