参考链接

示例来自bilibili Kotlin语言深入解析 张龙老师的视频

1 lambda表达式深入

/*** lambda 表达式深入* 当函数参数是函数时 并且该函数只有一个参数 可以不传入任何参数* 之前讲lambda表达式时提到 当函数只有一个参数时 在调用该函数时 我们可以用it代替这个唯一参数* 而这个it又是可以省略的* 如果函数体内部没有使用it 就像是it这个参数不存在一样**/fun main() {// test参数中有一个是函数 该函数不接受参数test(5, action = {println("hello")})// 当函数参数是函数时 并且该函数只有一个参数 完整格式如下// 在调用该函数时 我们可以用it代替这个唯一参数// 然后it还是是可以省略的test2(x=1,action = {it -> println("hello $it")})test2(x=1,action = {println("hello $it")})// 进阶版如下// 看起来就是我们没有输入任何参数test2(5, action = {println("hello")})// test2(5,::test)// 上面说的那种情况 不适用在函数引用上test(5, ::test3)test2(5, ::test4)test5(5, ::test6)test5(5, action = { x, y ->test6(x, y)})
}fun test(x: Int, action: () -> Unit) {
}fun test2(x: Int, action: (para:Int) -> Unit) {
}fun test3() {}fun test4(x: Int) {}fun test5(x: Int, action: (Int, Int) -> Unit) {action(1, 2)
}fun test6(x: Int, y: Int) {println(x + y)
}class HelloKotlin10 {
}

2 挂起函数

import kotlinx.coroutines.delay
import kotlinx.coroutines.launch
import kotlinx.coroutines.runBlocking/*** 挂起函数* 被suspend修饰的函数称为挂起函数* 挂起函数只能使用在协程或其他的挂起函数中*/
fun main() = runBlocking {launch {hello()}println("welcome")
}suspend fun hello(){delay(400)println("hello")world()
}
suspend fun world(){println("world")
}class HelloKotlin11 {}

3 全局协程

import kotlinx.coroutines.GlobalScope
import kotlinx.coroutines.delay
import kotlinx.coroutines.launch/*** 全局协程类似与守护线程* GlobalScope.launch启动的协程就是全局协程* 全局协程类似于守护线程(daemon thread) (当主线程执行完毕时 如果剩余的线程全部是守护线程 主线程会直接结束 守护线程的生命周期也会完结)* 使用GlobalScope启动的协程 不会保持线程的生命周期,他们就像守护线程一样*/fun main() {GlobalScope.launch {// 重复100次(输出I am delaying $repeatNumber 并等待400ms)repeat(100) { repeatNumber ->println("I am delaying $repeatNumber")delay(400)}}Thread.sleep(2000) // 主线程被sleep阻塞 一旦时间到达 GlobalScope创建的协程即使没有执行完毕 也会直接结束println("main thread down")
}/**
输出
I am delaying 0
I am delaying 1
I am delaying 2
I am delaying 3
I am delaying 4
main thread down*/class HelloKotlin12 {
}

Kotlin学习笔记23 协程part3 lambda表达式深入 挂起函数 全局协程相关推荐

  1. JAVA学习笔记 15 - 函数式接口、Lambda表达式和方法引用

    本文是Java基础课程的第十五课.主要介绍在JDK8中,Java引入的部分新特性,包括函数式接口.Lambda表达式和方法引用.这些新特性使得Java能够在按照面向对象思想进行开发的基础上,融合函数式 ...

  2. Kotlin 学习笔记(四)—— 协程的基础知识,面试官的最爱了~

    又是一个月没见了,坚持永远是世上最难的事情,但,往往难事才会有更大的收获.与君共勉~ 前段时间一直在学习 Compose,所以导致 Kotlin 笔记系列搁置了好久.一方面是因为 Compose 的学 ...

  3. Kotlin 学习笔记(十四)浅读协程

    上一篇-Kotlin 学习笔记(十三)高阶函数 为什么需要协程   举例一个异步编程中最常见的场景:后台线程执行一个A任务,下一个B任务依赖于A任务的执行结果,所以必须等待上一个任务执行完成后才能开始 ...

  4. Kotlin学习笔记26 协程part6 协程与线程的关系 Dispatchers.Unconfined 协程调试 协程上下文切换 Job详解 父子协程的关系

    参考链接 示例来自bilibili Kotlin语言深入解析 张龙老师的视频 1 协程与线程的关系 import kotlinx.coroutines.* import java.util.concu ...

  5. Kotlin学习笔记24 协程part4 协程的取消与超时

    参考链接 示例来自bilibili Kotlin语言深入解析 张龙老师的视频 1 如何取消协程 import kotlinx.coroutines.*/*** 协程的取消*/fun main() = ...

  6. Kotlin学习笔记 第三章 函数 高阶函数 lambda表达式 内联函数

    参考链接 Kotlin官方文档 https://kotlinlang.org/docs/home.html 中文网站 https://www.kotlincn.net/docs/reference/p ...

  7. Kotlin学习笔记20 阶段复习2

    参考链接 示例来自bilibili Kotlin语言深入解析 张龙老师的视频 lambda表达式 内联函数 Kotlin学习笔记 第三章 函数 高阶函数 lambda表达式 内联函数_积跬步 至千里- ...

  8. StatQuest学习笔记23——RNA-seq简介

    StatQuest学习笔记23--RNA-seq简介 前言--主要内容 这篇笔记是StatQuest系列笔记的第58节,主要内容是讲RNA-seq的原理.StatQuest系列教程的58到62节是协录 ...

  9. Kotlin学习笔记(3)- 语法

    系列文章全部为本人的学习笔记,若有任何不妥之处,随时欢迎拍砖指正.如果你觉得我的文章对你有用,欢迎关注我,我们一起学习进步!kotlin学习笔记系列首发简书和CSDN Kotlin学习笔记(1)- 环 ...

最新文章

  1. 网页开发--html js
  2. 响应式编程优点 有效_Reactive(响应式)编程
  3. highcharts总结
  4. PAT_B_1054_Java(20分)
  5. 如何将自己的Java项目部署到外网
  6. mmorpg开发_MMORPG可以教给我们如何组建一支英勇的开发团队
  7. Python学习笔记:利用timeit计算函数调用耗时
  8. python3中input输入浅谈_详解Python3中的 input() 函数
  9. 线程编程 pthread 问题集合
  10. 1534 棋子游戏(博弈)
  11. labelme打开不了jpg格式和其他一些格式的图片
  12. 计算机设置新网络,新买的电脑怎么设置网络连接
  13. 理科女生计算机与会计学选择,我是一理科女生、在报考学校时候、选择会计还是会计电算化比较好呢?还有会计与审计、会计于统计核算....
  14. PTA实验4-1-3 找出最小值 (20分) 本题要求编写程序,找出给定一系列整数中的最小值。
  15. 生成时间序列每月月初月末
  16. Technical support of ZYC-Roll Book
  17. 面向 Java 开发人员的区块链链代码
  18. Tekton Pipeline 教程
  19. 大胆冲数学建模勘误表
  20. x200换屏_小黑本“清凉一夏” — Thinkpad X200 拆解清理

热门文章

  1. Java常用的垃圾收集器_JVM垃圾收集算法及常用垃圾收集器
  2. MySQL在windows的my-default.ini配置
  3. MongoDB 插入文档
  4. 通过Oracle VM Manager管理配置虚拟机
  5. Perl 日志分析W3A_system
  6. [WCF]NetTcpBinding在IIS中使用的详细配置方法
  7. 【转】SQLite3简介及在.Net程序中的使用(自增列的创建)
  8. C语言课后习题(9)
  9. 数据库-MySQL-SQL语句
  10. Linux运维新主机挂载硬盘,linux运维:Linux下添加新硬盘+分区及挂载详细步骤图解...