我是Kotlin的新手.你能解释一下"kotlin.String!"的意思吗?类型,我怎么能编译以下代码?
fun withDefault<A>(computation: () -> A, default: A) =
try { computation() } catch (e: Exception) { default }
fun getHostname1() = withDefault(InetAddress.getLocalHost().getCanonicalHostName, "localhost")
Run Code Online (Sandbox Code Playgroud)
编译器打印以下消息:
Kotlin: Type inference failed: fun <A> withDefault(computation: () -> A, default: A): A
cannot be applied to
(kotlin.String!,kotlin.String)
Run Code Online (Sandbox Code Playgroud)
谢谢.
当类型以!它结束时意味着这是一个平台类型,并且编译器不会强制执行null安全性.你可以阅读有关在官方平台类型的博客,一节Platform Types.
我建议这样修复:
fun getHostname1() = withDefault({ InetAddress.getLocalHost().getCanonicalHostName() } , "localhost")
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1183 次 |
| 最近记录: |