我试图从这个视频的第一个例子中学习高阶函数。这是我的代码和输出结果。
代码
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 reflection is not available?
compile "org.jetbrains.kotlin:kotlin-reflect:$kotlin_version"
可以解决这个问题。 - Pravin Sonawanekotlin-reflect
包含许多方法,很可能将您的 APK 方法计数推到了 64K 的限制之上。您可以通过启用 multidex,使用 kotlin.reflect.lite(如果适用),或者简单地忽略警告来解决这个问题。 - nicopico