kotlin标准库中的takeIf和takeUnless函数

别再写满屏if了!Kotlin里takeIf和takeUnless的5个实战场景(附代码对比) 本文深入解析Kotlin标准库函数takeIf和takeUnless的5个实战场景,帮助开发者摆脱满屏if-else的困扰。通过代码对比展示如何利用这两个函数实现链式调用条件处理、空安全协同、数据校验、集合操作优化及Android开发简化,显著提升代码简洁性和可维护性。 阅读详情

kotlin标准库中的takeIf和takeUnless函数

takeif

如果代码块predicate里面返回为true,则返回这个对象本身,否则返回空。

takeUnless

如果代码块predicate里面返回为false,则返回这个对象本身,否则返回空

示例

fun main(args:Array<String>){
    val number = Random.nextInt(100)
    val evenOrNull = number.takeIf { it % 2 == 0 }
    val oddOrNull = number.takeUnless { it % 2 == 0 }
    println("even: $evenOrNull, odd: $oddOrNull,number:$number")
}
//even: 32, odd: null,number:32
//number是32,满足%2==0,所以evenOrNull返回32;
//number是32,不满足%2==0,所以oddOrNull返回null;

fun main() {
    val str = "Hello"
    val caps = str.takeIf { it.isNotEmpty() }?.uppercase()
    //val caps = str.takeIf { it.isNotEmpty() }.uppercase() //compilation error
    println(caps)
}
kotlin的run,let,apply,also,takeIf,takeUnless,with的使用和区别 kotlin的run,let,apply,also,takeIf,takeUnless,with的使用和区别demo 立即下载

相关推荐

【爬虫】Python实现爬取淘宝商品信息(超详细)

项目基于Python的第三方库Selenium模拟浏览器运行、PyQuery解析和操作HTML文档,获取淘宝平台中某类商品的详细信息(商品标题、价格、销量、商铺名称、地区、商品详情页链接、商铺链接等),并基于第三方库openpyxl建立、存储于Excel表格中。# 全局变量count = 1 # 写入Excel商品计数# 启动ChromeDriver服务# 关闭自动测试状态显示 // 会导致浏览器报:请停用开发者模式# 把chrome设为selenium驱动的浏览器代理;# 窗口最大化。

qq_46315152的博客 4万+

Kotlin判空的各种操作(替换if else)

If not null val files = File("Test").listFiles() println(files?.size) If not null or else val files = File("Test").listFiles() println(files?.size ?: "empty") If not null and true if (someObject?.status == true) doThis() 或 someObject?.takeIf

Dream It Possible 5413

实验室LIMS系统选型指南:从赛默飞到金现代,5大主流方案横评

本文深入分析了实验室LIMS系统选型的5大核心维度,包括架构选择、行业适配性、合规性设计、智能化程度和成本模型。通过对比赛默飞、金现代等主流厂商的优劣势,提供实战避坑策略,帮助实验室管理者做出明智决策,提升运营效率和合规水平。

plum99的博客 257

Kotlin中的空判断处理

Kotlin中的一个伟大创前举就是空指针的处理,在代码的编译阶段就能检测可能出现的空指针问题,示例代码如下: data class Person(var name: String? = null) fun sayHello(name: String) { println("Hello $name") } fun main() { val person = Person("Even") if (person.name != null) { sayHello(pers

Android菜鸟的专栏 4941

QFN封装芯片手工焊接实战:从焊盘处理到拖焊技巧

本文详细介绍了QFN封装芯片手工焊接的全过程,从焊盘处理到拖焊技巧,再到常见问题的现场修复方法。通过实战经验分享,帮助工程师和DIY爱好者掌握0.5mm小间距QFN芯片的焊接技术,提升焊接成功率和质量。重点讲解了垂直与平行拖焊手法的对比应用,以及焊后清理与质量检验的关键步骤。

weixin_42652674的博客 532

基于C#的工业机器人上位机控制程序开发(搭配松下PLC+MC协议)

基于C#的工业机器人上位机控制程序开发,核心是上位机与松下PLC的MC协议通信和机器人控制的安全逻辑,而不是单纯的界面编写。在工控现场,程序的稳定性和安全性永远是第一位的——比如解耦通信逻辑、处理跨线程问题、添加安全互锁、记录操作日志,这些都是保证产线稳定运行的关键。新手在学习时,建议先跟着步骤搭建好环境,跑通基础的PLC通信和机器人控制功能,再逐步尝试进阶优化。数据模型化、通信封装化、逻辑模块化、UI解耦化。

这里只有干货:从 Modbus 通信到 MES 对接,从 YOLO 训练到工控机部署,带你搞定工业软件开发全流程。 1238

Kotlin学习之 ---- ? ?: !! 操作符的使用(Kotlin花式空判断)

? 问号修饰,两种使用方式 ?放在类名后面修饰表示对象可空; ?放在对象后修饰,则代表如果对象为空,则不执行后面的代码 ?: 问号冒号修饰符 ?:放在对象后面,代表如果对象为空,执行 ?: 后面的代码 !! 叹号修饰符 !! 放在对象后面,表示即使对象为空我也要往下执行,可能会抛出空指针异常

GGGL的专栏 2656

《QGIS快速入门与应用基础》239:指北针样式选择(预设/自定义)

系统解析指北针设计的核心规范与实操方法。文章首先强调行业规范红线,包括强制要求N字标注、箭头辨识度等关键要素,通过正误示例对比强化合规意识。其次详细讲解QGIS内置预设样式的分类应用,提供极简箭头、标准三角箭头等4类样式的选型对照表,并配图说明适用场景。最后介绍从基础微调到SVG导入的进阶自定义方法,帮助用户实现从合规到专业的样式设计。全文贯穿"合规优先、可读为本、美观为辅"原则,配有详细操作截图与规范对照表,适合从GIS新手到专业制图人员参考。

LuckyHanMo的博客 527

Kotlin语言内置函数学习2:with,also,takeIf,takeUnless

Kotlin语言内置函数学习2:with,also,takeIf,takeUnless

XXX_17的博客 936

Objective-C实现人工势场法(附完整源码)

Objective-C实现人工势场法(附完整源码)

希望我的博客,能帮上你解决学习中工作中所遇到的问题 426

工业级4~20mA转0~3V信号调理电路原理图设计,已量产(电流传感器)

在工业现场,4~20mA 电流信号是模拟量传输的 “老熟人”—— 抗干扰强、能跑长距离,但嵌入式 MCU 的 ADC 一般只认电压信号。最近做项目时,我设计了一款能覆盖 0~25mA(含超量程冗余)、线性输出 0~3V 的调理电路,经过现场调试挺稳定,分享下细节。

不脱发的程序猿 525

Kotlin报错:null cannot be cast to non-null type kotlin.Int

it.todo() //函数内使用it替代object对象访问属性和方法。it.todo() //object不为null,才会执行let函数。当a不为null时,执行大括号里的语句(it肯定不为null)如果a == null ,则为 null。= null,则a.b()如果 a 不是 b,则为 null。如果a 是 b,则 a as b。当a为null时,什么都不执行。如果a==null,抛出空指针。=null时,执行a。当a==null时,执行b。kotlin常用表达式let,?

Zhang Phil 1756

YOLOv12改进策略【独家融合改进】| MobileNetV4+BiFPN,轻松实现降参涨点,适用专栏内所有的骨干替换

可扩展的高效物体检测BiFPN(加权双向特征金字塔网络)

Limiiiing的博客 978

【Kotlin】标准库函数 ④ ( takeIf 标准库函数 | takeUnless 标准库函数 )

一、takeIf 标准库函数 二、takeUnless 标准库函数

让 学习 成为一种 习惯 ( 韩曙亮 の 技术博客 ) 1581

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

Kotlin-标准库函数

Kotlin-标准库函数

maoning20080808的专栏 1124

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

使用Kotlin takeIf(或takeUnless)

原文链接 在Kotlin的标准函数,有两大函数,即takeIf和takeUnless,乍一看,有什么特别之处呢?这几乎就是if? 或者极端点,把每一个if语句改成类似下面(不推荐)。 //原始代码 if(status){doThis()} //修改后的代码 takeIf {status}?apply {doThis()} 复制代码深入探讨 像其他任何东西一样,takeIf(或takeUnles...

weixin_34414196的博客 669

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

Kotlin基础 字符串操作与数字类型转换、标准库函数

一.String操作 1.substring 字符串截取,substring函数支持IntRange类型(表示一个整数范围的类型)的参数,until创建的范围不包括上限值(包前不包后)。 const val NAMES="jack,xiao,jason" fun main() { //包前不保后 val substring = NAMES.substring(0 until 3) pr...

m0_47914176的博客 3099

Kotlin标准库中那些提高编程效率的函数

当您深入探索 Kotlin 标准库时,会发现总是有更多东西需要学习和掌握。通过学习,可以用知识和工具武装自己,以编写优雅、高效和有弹性的代码。Kotlin标准库中那些提高编程效率的函数。

chuyouyinghe的专栏 242

Kotlin对比Java 入门学习记录(肆)

Kotlin入门学习记录

LuKey_C的博客 240

【Kotlin】标准库函数总结

文章目录一、apply 标准库函数二、let 标准库函数三、run 标准库函数1、run 函数传入 Lambda 表达式作为参数2、run 函数传入函数引用作为参数四、with 标准库函数五、also 标准库函数六、takeIf 标准库函数七、takeUnless 标准库函数Kotlin 语言中 , 在 Standard.kt 源码中 , 为所有类型定义了一批标准库函数 , 所有的 Kotlin ...

Android技术之家 581

Android---Kotlin 学习006

解释说明:当 {it.exists() && it.canRead()}(匿名函数) 结果为 true, 那么这一句 takeIf { it.exists() && it.canRead() } 返回接收者对象(即File),然后再调用 readText();和其它标准函数有点不一样,takeIf 函数需要判断 lambda 中提供的条件表达式,给出 true 或 false 结果,如果判断结果为 true,从 takeIf 函数返回接收者对象,如果是 false,则返回 null。

qq_44950283的博客 967

kotlin 语法糖

【代码】kotlin 语法糖。

heeheeai的博客 1027

Kotlin学习笔记(二)

1. 构造函数 在 Kotlin 中的⼀个类可以有⼀个主构造函数和⼀个或多个次构造函数。主构造函数是类头的⼀部分:它跟在类名后。 class Person constructor(firstName: String) { } 复制代码如果主构造函数没有任何注解或者可⻅性修饰符,可以省略这个 constructor 关键字。 class Person(firstName: String) { } 复...

weixin_34166472的博客 128

Kotlin作用域函数:提升代码简洁性与可读性

作用域函数是Kotlin语言中一组强大的扩展函数,包括let、run、with、apply和also,它们通过在对象上下文中执行代码块来简化代码结构。这些函数的核心原理是利用lambda表达式和接收者对象,减少重复代码并提升可读性。在Android开发等场景中,作用域函数能显著优化对象初始化和配置流程,如使用apply函数配置View属性。let函数特别适合处理null安全检查和数据转换,而also函数则擅长在不中断链式调用的情况下处理副作用。合理组合这些函数可以创建既简洁又易于维护的代码结构,同时由于它们

weixin_29248313的博客 268

Kotlin里的takeIf和takeUnless

介绍 我们使用kotlin的时候,会经常用到一些如let、apply、run这些作用域函数,它能让我们方便、简洁地链式调用对象的方法,除了这些,Kotlin标准库还提供了 takeIf 函数和 takeUnless 函数. 这些函数允许你在链式调用中加入对象的状态检查。 官方文档在此 使用场景 我们在写if语句的时候经常会遇到这样的场景:前面调用了一个函数计算得出了一个结果,现在需要对这个结果做一个分支判断,并且我们只需要用到if的一个分支时,可以用takeIf和takeUnless代替 如:

totond的博客 1万+

【Kotlin】标准库函数总结 ( apply 函数 | let 函数 | run 函数 | with 函数 | also 函数 | takeIf 函数 | takeUnless 函数 )

一、apply 标准库函数、 二、let 标准库函数、 三、run 标准库函数、 1、run 函数传入 Lambda 表达式作为参数、 2、run 函数传入函数引用作为参数、 四、with 标准库函数、 五、also 标准库函数、 六、takeIf 标准库函数、 七、takeUnless 标准库函数、

让 学习 成为一种 习惯 ( 韩曙亮 の 技术博客 ) 2万+
上一篇: kotlin标准库中的Scope functions(作用域函数的使用)
下一篇: IDEA kotlin项目报错 kotlin not configured
cdcdec
博客等级 码龄9年 8粉丝 104原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值