当前位置: 首页 > news >正文

采集网站会收录吗wordpress整合ckplayer

采集网站会收录吗,wordpress整合ckplayer,泰安网络安装,怎么查看网站收录文章目录 for循环中使用break、continueLabel标签forEach中如何退出循环资料 Kotlin 有三种结构化跳转表达式: return:默认从最直接包围它的函数或者匿名函数返回。break:终止最直接包围它的循环。continue:继续下一次最直接包围…

文章目录

      • for循环中使用break、continue
      • Label标签
      • forEach中如何退出循环
      • 资料

Kotlin 有三种结构化跳转表达式:

  • return:默认从最直接包围它的函数或者匿名函数返回。
  • break:终止最直接包围它的循环。
  • continue:继续下一次最直接包围它的循环。

for循环中使用break、continue

fun forControl() {for (i in 1..5) {if (i == 3) break //1 这里分别使用break continue returnprintln("i: $i")}println("循环外继续执行")
}

1处分别使用break、continue、return 替换,执行结果如下:

//break 
i: 1
i: 2
循环外继续执行//continue
i: 1
i: 2
i: 4
i: 5
循环外继续执行//return
i: 1
i: 2

嗯,跟Java中的使用姿势是一样的,继续往下看。

Label标签

在 Kotlin 中任何表达式都可以用标签(label)来标记。 标签的格式为标识符后跟 @ 符号,例如:abc@、loop@都是有效的标签。 要为一个表达式加标签,我们只要在其前加标签即可。示例:

loop@ for (i in 1..5){//...}

这里在嵌套for循环中使用Label,可以控制break及continue的范围:

fun forNestedControl() {loop@ for (i in 1..2) {println("i: $i")for (j in 1..5) {if (j == 3) break@loop //break continueprintln("j: $j")}}
}

执行结果:

//break
i: 1
j: 1
j: 2
循环外继续执行//continue
i: 1
j: 1
j: 2i: 2
j: 1
j: 2
循环外继续执行

注意不能在上述代码中使用return@loop,因为目标标签表示的不是函数,错误信息如下:

Target label does not denote a function

结论:标签限制的 break 跳转到刚好位于该标签指定的循环后面的执行点。 continue 继续标签指定的循环的下一次迭代

forEach中如何退出循环

在forEach中并不能直接使用break、continue:

break/continue错误使用
可以看到直接报错了,错误信息也很明确:break 和 continue 只允许在循环中使用,而这里是forEach的闭包,所以并不能直接使用break 和 continue。那么如何在forEach中分别模拟出break、continue的效果呢?通过Label即可实现,如:

fun forEachControl() {listOf(1, 2, 3, 4, 5).forEach forEach@{if (it == 3) return@forEachprintln("it:$it")}println("循环外继续执行")
}

return 只会从 lambda 表达式中返回。通常情况下使用隐式标签更方便(Label 标签与接受该 lambda 的函数同名即可使用隐式标签),简化之后:

fun forEachControl() {listOf(1, 2, 3, 4, 5).forEach{if (it == 3) return@forEachprintln("it:$it")}println("循环外继续执行")
}

代码执行结果:

it:1
it:2
it:4
it:5
循环外继续执行

可以看到return@forEach相当于表达式里面的continue了。嗯哼?为什么不是break的效果呢?明明已经return@forEach了呀,其实这是Kotlin闭包带来的副作用,看下forEach的源码:

public inline fun <T> Iterable<T>.forEach(action: (T) -> Unit): Unit {//注意看下面这行代码的逻辑for (element in this) action(element)
}

action闭包作为参数传入的,所以在forEach中return@forEach只能停止当前闭包的逻辑,后面的循环并不会受影响,会继续后面的循环。那么如何在forEach中模拟break的效果呢?只要把声明Label放到forEach外面即可以了:

fun forEachControl() {run loop@{listOf(1, 2, 3, 4, 5).forEach {if (it == 3) return@loopprintln("it:$it")}println("循环外继续执行")}}

执行结果:

it:1
it:2

资料

【1】Kotlin返回和跳转:https://www.kotlincn.net/docs/reference/returns.html

http://www.yayakq.cn/news/96910/

相关文章:

  • dedecms医院网站wap模板(橙色)大兴企业网站建设公司
  • 如何做自己的淘客网站给人家做的网站想改怎么改
  • 潜山云建站网站建设游戏网页设计教程
  • 电脑怎么做服务器 网站上海住房城乡建设网站证件查询
  • aaaa景区网站建设标准东莞网站开发后缀
  • 百度公司做网站优化多少钱海口网页建站模板
  • 影响网站用户体验张家港网站建设早晨设计
  • 建设部咨询资质网站网站建设改手机号
  • 免费网站部署如何在租用的服务器上部署自己的网站 mysql
  • 手机怎样下载安装建设银行网站dnf辅助源码论坛
  • 台州网站制作服务搜索引擎优化是做什么
  • 网站的推广方式包括友情链接检测方法
  • 上海网站建设小程序开发外贸网站模板免费
  • 常州做网站公司有哪些厦门网站建设推广哪家好
  • 专业做网站公司 前景美仑-专门做服装的网站
  • 品牌做网站一体化企业管理软件
  • 房管局 网站做房查外汇网站怎么做优外汇网站
  • 吉安网站建设优化服务模板免费下载网站
  • 建设银行网站的目的是什么微信运营是干嘛的
  • 手机建网站详细步骤杭州seo推广服务
  • 雍鑫建设集团官方网站可以做软件的网站
  • 相册特效手机网站广东网页空间分销
  • 哪个网站可以做创意短视频wordpress个人支付
  • 网站开发需要哪些人才app推广服务部
  • 辽宁建设官方网站seo内容优化是什么
  • 青岛专业做商业房的网站贵阳网站制作系统
  • 公司设计网站需要注意哪些教着做美食的网站
  • 网站开发需要文章写的好吗建设工程规划许可证公示网站
  • 阿勒泰建设招聘网站id怎样转wordpress
  • 亚马逊网站推广怎么做在阿里云备案网站通过