Kotlin 反射不可用

标签 kotlin higher-order-functions

我试图从 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/

相关文章:

java - 在 Fragments Android 中使用 ConstraintLayout 时的空 UI

android - 如何避免在 Kotlin 中使用 lateinit 字段进行部分覆盖

android - 'kotlin-android-extensions' Gradle 插件已弃用

scala - 高阶函数定义中的括号错误(Scala)

scala - 如何在 Scala 中重构 (if/else if/else if) 链?

functional-programming - OCaml:首先应用第二个参数(高阶函数)

php - 将函数名称文字传递给高阶函数安全吗?

android - 如何用 Flow 替换 LiveData

android - 有没有办法从android studio中的webView获取ElementElementById?

javascript - 解释 "you can have functions that change other functions"