Kotlin 初学者:我正在查看 Jetpack Compose 教程,并且遇到了以下代码片段:
@Composable
fun MessageCard(msg: Message) {
Column {
Text(text = msg.author)
Text(text = msg.body)
}
}
Run Code Online (Sandbox Code Playgroud)
如果Column是一个函数名,没有“()”但有{}怎么调用呢?我希望它像 Text 函数一样被调用。
我尝试将 Column 视为对象或代码块名称,但这都没有意义。
现在 Kotlin 中的一些事情让我非常沮丧,我不知道如何解决这个问题:
val map = mapOf(1 to "one")
val value = map[1] // value is String? instead of String
val certainlyNot = map[999] // value is String? instead of compiler error
Run Code Online (Sandbox Code Playgroud)
在我看来,编译器应该能够推断出1键的值类型 String ,并且在尝试访问999键时应该阻止编译。
哪种数据结构更适合我的需求?
编辑:上下文 - >我需要访问像这样的循环中的值
for (key in map.keys) {
val myValue = map[key] // myValue is String?
// but I don't understand why I am forced to do null checks
// when the key in question is certainly in the map …Run Code Online (Sandbox Code Playgroud)