我正在try 学习一些Android基础知识,并使用这个UI来在单击时生成随机数:
@Composable
fun DiceWithButton(modifier: Modifier = Modifier) {
var value by remember { mutableStateOf(1) }
fun rollNew() {
value = (1..6).random()
}
Column(modifier = blabla) {
Text(text = value.toString())
Button(onClick = rollNew) {
Text("Roll")
}
}
}
它无法用消息Type mismatch: inferred type is Unit but () -> Unit was expected
构建
但当我将rollNew
重写为Lambda时,它工作得很好:
var rollNew = {
value = (1..6).random()
}
这对来自Python/JavaScript/Golang背景的我来说很困惑,其中任何函数值都可以用()
调用.
Kotlin有什么区别?为什么用fun
定义rollNew
时有Unit
类型? 或者Kotlin是否试图在功能时调用rollNew
,因此调用Unit
?