我是Kotlin的新手。你能解释一下" kotlin.String是什么意思!"类型,我怎么能编译以下代码?
fun withDefault<A>(computation: () -> A, default: A) =
try { computation() } catch (e: Exception) { default }
fun getHostname1() = withDefault(InetAddress.getLocalHost().getCanonicalHostName, "localhost")
编译器打印以下消息:
Kotlin: Type inference failed: fun <A> withDefault(computation: () -> A, default: A): A
cannot be applied to
(kotlin.String!,kotlin.String)
谢谢。
答案 0 :(得分:7)
当类型以!
结尾时,表示这是一种平台类型,编译器不会强制执行null安全性。您可以在官方blog部分Platform Types
中阅读有关平台类型的信息。
我建议这样修复:
fun getHostname1() = withDefault({ InetAddress.getLocalHost().getCanonicalHostName() } , "localhost")