Pregunta La reflexión de Kotlin no está disponible


Estaba tratando de aprender funciones de orden superior del primer ejemplo de esto vídeo. Aquí está mi código y salida.

Código

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) }))
}

Salida

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

Entonces mi pregunta es, ¿por qué se imprime La reflexión de Kotlin no está disponible?


5
2018-06-03 21:07


origen


Respuestas:


La reflexión completa requiere el kotlin-reflect biblioteca, además de kotlin-stdlib. Si la reflexión completa está disponible, probablemente tendrá una visión más completa toString(), de ahí el mensaje.


9
2018-06-03 21:10