如何直接为变量赋值类型为(String) -> Unit的空lambda表达式?
解决方案
直接给空lambda加一个占位参数即可,符合要求的写法如下:
@Composable fun HelloContent(name2: String, onNameChange: (String) -> Unit) { Column(modifier = Modifier.padding(16.dp)) { // 其他代码 OutlinedTextField( // 其他参数 onValueChange = { _ -> } ) } }
各错误写法原因说明
- 代码B报错:你写的
{ }是无参lambda,和onValueChange要求的「接收1个String类型参数、返回Unit」的函数类型不匹配,编译器无法完成类型推导所以报错。加_ ->就是显式声明该lambda接收1个参数,下划线表示这个参数不需要使用,完全符合类型要求。 - 代码C报错:
onValueChange的参数类型是不可空的(String) -> Unit,不允许传入null值,如果要支持传null需要把参数类型改为(String) -> Unit?才可以。 - 代码D语法本身是合法的,如果运行报错大概率是拼写等其他问题,但写法过于冗余,远不如占位lambda的写法简洁高效。
内容的提问来源于stack exchange,提问作者HelloCW
相关产品推荐
相关产品推荐

