Kotlin入门-label升级循环控制的自由跳动

本文介绍了Kotlin中简化后的循环控制,包括for循环的多种模式,如iterator、索引遍历和withIndex的使用,以及while与do...while循环。文章详细阐述了标签(label)在break和continue中的应用,允许从外层函数返回,并通过实例展示了不同情况下的返回操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在这里插入图片描述

Kotlin简化了 条件判断,还简化了 循环判断

除了文字版本,也有Xmind版本 github地址

本文需要几个问题
① for循环支持几种模式?
② for循环如何取值?去index索引
③ label怎么用?简化了什么?又需要注意什么?
④ break continue集合label,可以怎么跳?

本节有5个部分

  • For循环
  • while与do…while循环
  • 返回和跳转
  • break和continue
  • 标签

for循环

支持几种类型

  • iterator迭代器(java也有)
for (item: Int in ints) {
    // ……
}
  • 索引遍历。类似for(int i = 0; i < sum; i ++)。这又是简化
for (i in array.indices) {
    print(array[i])
}
  • 库函数withIndex。对简化for(int i = 0; i < sum; i ++)做了升级。直接取出了值
for ((index, value) in array.withIndex()) {
    println("the element at $index is $value")
}

"在区间上遍历"会编译成优化的实现而不会创建额外对象
任何提供了迭代器的对象 都可以被循环遍历

循环遍历的条件

有一个成员函数或者扩展 iterator()函数

  • 有一个成员函数或者扩展函数 next(),并且
  • 有一个成员函数或者扩展函数 hasNext() 返回 Boolean。

while 与 do…while 循环

与java一样,这里就不详述


返回和跳转

与java一样,这里就不详述


break和continue

  • 任何表达式都可以用标签(label)来标记
  • 标签的格式为标识符后跟 @ 符号,例如:abc@、fooBar@
loop@ for (i in 1..100) {
    for (j in 1..100) {
        if (……) break@loop
    }
}

解析一下。
在表达式前,➕标签;

  • break:跳转的位置(到刚好位于该标签指定的循环后面的执行点)
  • continue:继续标签指定的循环的下一次迭代

标签处返回

标签限制的 return 允许我们从外层函数返回

范例一

fun foo() {
    ints.forEach {
        if (it == 0) return
        print(it)
    }
}
return是从 包围它的 函数foo()返回

范例二

fun foo() {
    ints.forEach lit@ {
        if (it == 0) return@lit
        print(it)
    }
}
这里从forEach中返回。

范例三
自带隐式标签;与接受该lambda的函数同名

fun foo() {
    ints.forEach {
        if (it == 0) return@forEach
        print(it)
    }
}

范例四
返回值: 1

fun foo() {
    abc@ ints.forEach(fun(value: Int) {
        if (value == 0) return@abc 1
        print(value)
    })
}

从标签@abc返回1

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值