首页 > 解决方案 > 如何从 Kotlin 中的匿名 lambda 返回?

问题描述

如何从 Kotlin 中的匿名 lambda 返回?

不知何故,编译器不允许在 lambda 体内返回。由于 lambda 是匿名的return@...,因此这里不可能。

class Foo {

    var function: (String) -> Unit = { _ -> }

    init {
        function = { text ->

            if (text == "foo"){
                // do side effects here
                return
                //'return' is not allowed here
                //This function must return a value of type Foo
            }
            // do side other side effects
        }
    }
}

编辑:更新示例,因此很明显这个问题是关于 return 语句而不是编码实践

标签: kotlinlambda

解决方案


使用标签:

class Foo {

    var function: (String) -> Unit

    init {
        function = function@ { text ->
    
            if (text == "foo"){
                return@function
            }

            print(text)

        }
    }
}

推荐阅读