我试图从 video 的第一个示例中学习高阶函数.这是我的代码和输出。
代码
fun lowercase(value: String) = value.toLowerCase()
fun higherOrder(value:String, op: (String) -> String) : String {
println("Executing higher order fun $op")
return op(value)
}
fun main(args: Array<String>) {
println(higherOrder("HELLO", ::lowercase))
println(higherOrder("hello", {it -> lowercase(it)}))
println(higherOrder("HeLlo", { x -> lowercase(x) }))
println(higherOrder("Hello", { lowercase(it) }))
}
输出
Executing higher order fun function lowercase (Kotlin reflection is not available)
hello
Executing higher order fun Function1<java.lang.String, java.lang.String>
hello
Executing higher order fun Function1<java.lang.String, java.lang.String>
hello
Executing higher order fun Function1<java.lang.String, java.lang.String>
hello
Process finished with exit code 0
所以我的问题是,为什么它打印 Kotlin 反射不可用?
最佳答案
除了 kotlin-stdlib
之外,完全反射还需要 kotlin-reflect
库。
如果完全反射可用,它可能会有更全面的 toString()
,因此是消息。
关于Kotlin 反射不可用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44348557/