Kotlin 作用域函数

作用域函数(Scope Functions)

函数参数返回值说明
letitlambda result非空对象执行代码块
applythis上下文对象用于对象配置操作
alsoit上下文对象执行额外操作
runthislambda result用于对象配置和计算结果
withthislambda result非扩展函数,配置和计算

takeIf 和 takeUnless

  • takeIf 满足条件返回对象,否则返回 null
  • takeUnlesstakeIf 相反,满足条件返回 null,否则返回对象。

能很好地 链式调用,组合使用 作用域函数,很实用。

例子:

实现 匹配字符串 并打印 位置功能

str.indexOf(sub).takeIf { it >= 0 }?.let {
  println("start position: ${it}");
}

文档

  • 9
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Kotlin协程的作用域函数有五种:let、run、with、apply以及also。这些函数基本上做了同样的事情:在一个对象上执行一个代码块。例如,我们可以使用apply函数来初始化一个对象的属性,如下所示:val adam = Person("Adam").apply { age = 20 city = ... }。通过apply函数,我们可以在代码块内直接访问和修改对象的属性,从而简化了对象的初始化过程。 在使用协程的过程中,如果我们想要判断协程是否被取消了,根据不同的情况采取相应的处理逻辑,可以使用if语句和isActive属性来判断。但是这样做可能比较繁琐且容易出错。另一种更简洁的方式是使用yield函数,yield函数是官方协程框架提供的一个对逻辑没有影响的挂起函数。通过使用yield函数,我们可以在协程中暂停执行,并且不需要关心协程的取消状态。 除了官方提供的几种作用域函数外,我们还可以通过继承或组合的方式创建自定义的协程作用域。例如,在ViewModel或Service中,我们可以使用SupervisorJob来创建自己的CoroutineScope对象。通过自定义的协程作用域,我们可以管理和控制协程的生命周期,并且可以处理协程中可能发生的异常。比如,在ViewModel中,我们可以在onCleared方法中取消自定义的协程作用域,确保协程的正确关闭。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [Kotlin作用域函数之间的区别和使用场景详解](https://download.csdn.net/download/weixin_38690830/14014853)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *2* *3* [【深入理解Kotlin协程】协程作用域、启动模式、调度器、异常和取消【使用篇】](https://blog.csdn.net/lyabc123456/article/details/127800121)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值