有没有办法让 Kotlin 编译器准确地告诉我它认为表达式是什么类型?所以例如给定 (1 + 2)
它将打印 Int
。
更好的例子:(if (args.isEmpty()) 1 else 2.0)
应该打印 Any,因为这就是编译器认为的该术语的类型,因为它可以在编译时推断 Int
和 Double
最具体的父类(super class)型。
最佳答案
fun main() {
println(typeName { if (true) 1 else 2.5 }) // Any
println(typeName { 1 + 2 }) // Int
println(typeName { f() }) // String
}
fun f(): String = TODO() // throws NotImplementedError
inline fun <reified T> typeName(block: () -> T): String? = T::class.simpleName
关于kotlin - 如何让编译器说出它认为表达式是什么类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61996116/