`
kingsword
  • 浏览: 7453 次
社区版块
存档分类
最新评论

Kotlin Lambda的返回

 
阅读更多
先看下面这个代码,有问题不?
repeat(10) {
    if (it == 3) break
    println(it)
}

 答案是编译通不过地。

 

  • break,是loop的兄弟,只能在for, while这些地方使用

那如果我想从那里面跳出来,怎么破?先看下面这个

fun main(args: Array<String>) {
    repeat(10) {
        if (it == 3) return@repeat
        print(it)
    }
    println("hello")
}

这段代码会输出:

012456789hello

看样子return@repeat起到了类似continue的作用,把3的打印跳过了。那如果我像下面这样直接return呢?

 

fun main(args: Array<String>) {
    repeat(10) {
        if (it == 3) return
        println(it)
    }
    println("hello")
}

 输出结果变成:

 

012

所以,如果只用return的话,会直接导致调用repeat的函数(main)直接return了。

 

思考......如果我就想像loop的break那样,从这些lambda里面跳出来而又不导致外部函数被return。换句话说,如果我想输出012hello, 那该如何破?且看下面这段:

fun main(args: Array<String>) {
    run loop@{
        repeat(10) {
            if (it == 3) return@loop
            print(it)
        }
    }
    println("hello")
}

所以,结论是只有通过在repeat的外层再包一层lambda并且设置上label,才能模拟出“break”的效果。

 

 

0
0
分享到:
评论

相关推荐

    kotlin-lambda-return-inliner:Kotlin编译器插件,可优化内联函数返回的lambda

    Kotlin-lambda返回衬里 (当前正在等待批准) Kotlin编译器插件,可优化由内联函数返回并存储在局部变量中的lambda。 此优化可用于免费模拟Kotlin代码中的结构(以及更多)。 这个仓库目前处于非常非常试验的状态,...

    Kotlin 使用Lambda来设置回调的操作

    Lambda 表达式是 Kotlin 中的一种特殊语法结构,允许开发者将函数作为参数传递给其他函数或将函数作为返回值返回。在 Kotlin 中使用 Lambda 来设置回调的操作是非常方便和高效的。 Lambda 表达式是匿名函数的简写...

    Kotlin基础学习之lambda中return语句详解

    为了从Lambda表达式中返回而不影响外部函数,Kotlin提供了一种称为“标签返回”(或“局部返回”)的机制。通过在`return`关键字后面加上Lambda参数所在函数的名称(或者使用默认标签),我们可以指定返回到哪个函数...

    玩转Kotlin 彻底弄懂Lambda和高阶函数

    Lambda和高阶函数在Kotlin中的应用 Lambda表达式是一种函数的表示方式,它可以简省很多代码,并且可以避免在抽象类或接口中编写明确的函数声明。Lambda表达式的语法规则是:lambda表达式总是被大括号括着,参数...

    详解Kotlin 高阶函数 与 Lambda 表达式

    详解 Kotlin 高阶函数 与 Lambda 表达式 本文主要介绍了 Kotlin 高阶函数、高阶函数的应用、Lambda 表达式、内联函数、匿名函数和闭包等相关知识点。 高阶函数是一种特殊的函数,它接受函数作为参数,或者返回一个...

    深入理解Kotlin中的Lambda表达式

    在Kotlin中,lambda表达式主要用于实现高阶函数,即那些接受其他函数作为参数或返回函数的函数。 ##### 2.2 Lambda 表达式的语法 Lambda表达式的语法简洁明了,基本格式如下: ```kotlin { 参数 1: 类型 1, 参数 ...

    kotlin实战教程之lambda编程

    例如,上述表达式定义了一个接受两个整数参数并返回它们之和的Lambda。 在Kotlin中,Lambda可以作为函数的参数传递。例如,`intOperator` 函数接受两个整数和一个Lambda作为参数: ```kotlin fun intOperator(o1: ...

    Kotlin教程.pdf

    Kotlin提供了对Java 8的许多功能的原生支持,包括Lambda表达式、类型推断和扩展函数等。为了能够使用Kotlin,需要JDK版本为1.6或更高。 Kotlin的应用范围不仅限于Android开发,还可以编译成JavaScript代码,用于...

    《Kotlin从零到精通Android开发》源码_kotlin_

    例如,高阶函数可以接受其他函数作为参数,或者返回一个函数,而lambda表达式则简化了匿名函数的定义。 在Android开发中,Kotlin与Java互操作性极强,使得现有Java代码库可以无缝集成到Kotlin项目中。Kotlin还提供...

    kotlin2018年最新中文文档

    在基础章节中,Kotlin语言参考文档介绍了基本类型、包的使用、返回与跳转、类与对象等概念。其中,类与对象章节详细讲述了类的定义、构造函数、类成员(属性和函数)的声明,以及继承和实现接口的规则。泛型、数据类...

    kotlin实战,极简教程

    2. **高阶函数与lambda表达式**:Kotlin支持高阶函数,即可以接受函数作为参数或返回函数的函数。Lambda表达式是Kotlin中处理函数的关键工具,它们提供了简洁的代码表示,尤其在处理集合操作时。 3. **协程...

    kotlin语法讲解基础6,7

    在Kotlin中,函数是执行特定任务的代码块,可以接受参数并返回结果。定义一个基本的函数,你需要使用`fun`关键字,后面跟着函数名,然后是参数列表,最后是函数体。例如: ```kotlin fun sayHello(name: String) { ...

    Kotlin中文文档

    Kotlin具有现代的编程语言特性,包括扩展函数、函数字面量、lambda表达式、类型推断、空安全、数据类、密封类等。 在Kotlin中,基本语法非常简洁,例如定义函数和变量的方式。函数的定义可以通过关键字“fun”来...

    kotlin语言 中文版

    - Lambda表达式:Kotlin对Lambda表达式有很好的支持,使得函数式编程更加便捷。 - 类型推断:Kotlin具有强大的类型推断能力,减少冗余的类型声明。 - 标准库:Kotlin拥有一个广泛的标准库,涵盖了字符串处理、集合...

    android kotlin ktx包

    3. **Lambda表达式与推断类型**:KTX充分利用Kotlin的lambda表达式和类型推断,使得回调函数的编写更加简洁。不再需要显式声明函数类型,只需提供lambda即可。 ### 主要模块 1. **AndroidX KTX**:这是针对Android...

    kotlin-in-chinese kotlin中文版教程

    Lambda表达式是Kotlin的一大特色,它们是匿名函数的快捷表示,常用于函数式编程场景,如集合操作(map、filter、reduce等)。Kotlin的函数类型允许将函数作为参数传递或作为返回值,使得函数式编程风格得以无缝集成...

    Kotlin中文版文档

    Kotlin的函数和lambda表达式提供了更简洁的函数式编程方式,允许将代码块当作参数传递,以及返回函数。与Java相比,Kotlin提供了更多的工具支持,如Maven、Ant、Griffon、Gradle等构建工具,以及一个详尽的官方文档...

    Kotlin教学

    - **函数**:Kotlin 中的函数可以作为值传递和返回。 - **高阶函数与 Lambda 表达式**:支持将函数作为参数传递,以及在运行时创建匿名函数。 - **内联函数**:允许优化函数调用的成本,避免了额外的对象创建开销。 ...

    kotlin开发电子书

    - 高级功能:包括函数和Lambda表达式、内联函数、协程、其他高阶函数与Lambda表达式、解构声明、集合(List、Set、Map)、范围、类型检查与转换、等号运算符重载、空安全、异常处理、注解、反射、类型安全构建器等。...

Global site tag (gtag.js) - Google Analytics