lambda 函数中的类型不匹配 - Kotlin
Type mismatch in lambda function - Kotlin
我想从字符串资源中获取文本,取决于item.route,它在下面的代码之前指定。
但是整个“when”表达式给我错误:
“类型不匹配:推断类型为 () -> Int,但预期为 Int。”
我不知道如何解决它。
Text(
text = stringResource(id = {
when (item.route) {
"menu_screen" -> R.string.menu
"orders_screen" -> R.string.orders
else -> R.string.orders
}
}),
textAlign = TextAlign.Center
)
只需删除多余的花括号 ;)
Text(
text = stringResource(id =
when (item.route) {
"menu_screen" -> R.string.menu
"orders_screen" -> R.string.orders
else -> R.string.orders
}
),
textAlign = TextAlign.Center
)
当您将 空 方括号 { }
放在某物周围时,它会被解释为 lambda 函数。 “裸”是指不在 class/fun/when/if/else 之后。您需要删除放置在那里的额外括号。
Text(
text = stringResource(id =
when (item.route) {
"menu_screen" -> R.string.menu
"orders_screen" -> R.string.orders
else -> R.string.orders
}
),
textAlign = TextAlign.Center
)
一些其他语言(例如 Java)允许您用方括号括起代码,以限制内部声明的变量的范围或计算采用多个表达式的内容。要在 Kotlin 中执行此操作,您必须使用作用域内联函数,例如 run { }
.
我想从字符串资源中获取文本,取决于item.route,它在下面的代码之前指定。
但是整个“when”表达式给我错误: “类型不匹配:推断类型为 () -> Int,但预期为 Int。” 我不知道如何解决它。
Text(
text = stringResource(id = {
when (item.route) {
"menu_screen" -> R.string.menu
"orders_screen" -> R.string.orders
else -> R.string.orders
}
}),
textAlign = TextAlign.Center
)
只需删除多余的花括号 ;)
Text(
text = stringResource(id =
when (item.route) {
"menu_screen" -> R.string.menu
"orders_screen" -> R.string.orders
else -> R.string.orders
}
),
textAlign = TextAlign.Center
)
当您将 空 方括号 { }
放在某物周围时,它会被解释为 lambda 函数。 “裸”是指不在 class/fun/when/if/else 之后。您需要删除放置在那里的额外括号。
Text(
text = stringResource(id =
when (item.route) {
"menu_screen" -> R.string.menu
"orders_screen" -> R.string.orders
else -> R.string.orders
}
),
textAlign = TextAlign.Center
)
一些其他语言(例如 Java)允许您用方括号括起代码,以限制内部声明的变量的范围或计算采用多个表达式的内容。要在 Kotlin 中执行此操作,您必须使用作用域内联函数,例如 run { }
.