代码之家  ›  专栏  ›  技术社区  ›  HelloCW

如何将空lambda(String)->Unit直接分配给变量?

  •  0
  • HelloCW  · 技术社区  · 3 年前

    我正在研究代码A。我希望直接将空lambda表达式助理到 onValueChange 用于测试。

    但是代码B、代码C和代码D都错了,我怎么能分配一个null lambda (String) -> Unit 到变量 onValueChange ?

    代码A

    @Composable
    fun HelloContent(name2: String, onNameChange: (String) -> Unit) {
        Column(modifier = Modifier.padding(16.dp)) {
            ...
            OutlinedTextField(
                ...
                onValueChange = onNameChange          
            )
        }
    }
    

    代码B

    @Composable
    fun HelloContent(name2: String, onNameChange: (String) -> Unit) {
        Column(modifier = Modifier.padding(16.dp)) {
            ...
            OutlinedTextField(
                ...
                onValueChange = { }
            )
        }
    }
    

    代码C

    @Composable
    fun HelloContent(name2: String, onNameChange: (String) -> Unit) {
        Column(modifier = Modifier.padding(16.dp)) {
            ...
            OutlinedTextField(
                ...
                onValueChange = null           
            )
        }
    }
    

    代码D

    @Composable
    fun HelloContent(name2: String, onNameChange: (String) -> Unit) {
        Column(modifier = Modifier.padding(16.dp)) {
            ...
            OutlinedTextField(
                ...
                onValueChange = fun(x:String):Unit{ }           
            )
        }
    }
    
    0 回复  |  直到 3 年前
        1
  •  1
  •   Alexey Romanov    3 年前

    你没有说在哪里 OutlinedTextField 来自,但我猜 this one 。在这种情况下,答案是你不能;类型为 (String) -> Unit 这是不可为null的。是的,我看到的参数如下 label: () -> Unit = null ,但这没有意义;不仅是 null 不是有效的参数,但如何 () -> Unit 被解释为标签?

    但一个无所事事的lambda和你的B和D一样。