news 2026/7/3 12:37:40

Kotlin 开发 - orEmpty 函数、ifEmpty 函数、ifBlank 函数、takeIf 函数

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Kotlin 开发 - orEmpty 函数、ifEmpty 函数、ifBlank 函数、takeIf 函数

orEmpty 函数

1、基本介绍
  • orEmpty 函数是一个用于处理可空对象的扩展函数,当对象为 null 时,它会返回一个对应类型的空实例
  1. 字符串String?,当为 null 时返回空字符串"",返回类型为String
@kotlin.internal.InlineOnlypublicinlinefunString?.orEmpty():String=this?:""
  1. 列表List<T>?,当为 null 时返回空列表[],返回类型为List<T>
@kotlin.internal.InlineOnlypublicinlinefun<T>List<T>?.orEmpty():List<T>=this?:emptyList()
  1. 集合Set<T>?,当为 null 时返回空集合[],返回类型为Set<T>
@kotlin.internal.InlineOnlypublicinlinefun<T>Set<T>?.orEmpty():Set<T>=this?:emptySet()
  1. 映射Map<K, V>?,当为 null 时返回空映射{},返回类型为Map<K, V>
@kotlin.internal.InlineOnlypublicinlinefun<K,V>Map<K,V>?.orEmpty():Map<K,V>=this?:emptyMap()
  1. 数组Array<T>?,当为 null 时返回空数组[],返回类型为Array<T>
publicactualinlinefun<reifiedT>Array<outT>?.orEmpty():Array<outT>=this?:emptyArray<T>()
2、基本使用
  1. 字符串String?
vals:String?=nullprintln(s.orEmpty())println(s.orEmpty().length)
# 输出结果 0
  1. 列表List<T>?
vallist:List<Int>?=nullprintln(list.orEmpty())println(list.orEmpty().size)
# 输出结果 [] 0
  1. 集合Set<T>?
valset:Set<String>?=nullprintln(set.orEmpty())println(set.orEmpty().size)
# 输出结果 [] 0
  1. 映射Map<K, V>?
valmap:Map<Int,String>?=nullprintln(map.orEmpty())println(map.orEmpty().size)
# 输出结果 {} 0
  1. 数组Array<T>?
valarr:Array<Int>?=nullprintln(arr.orEmpty().contentToString())println(arr.orEmpty().size)
# 输出结果 [] 0

ifEmpty 函数、ifBlank 函数、takeIf 函数

valhandleContent=if(etHandleContent.text.toString().isEmpty()){null}else{etHandleContent.text.toString()}valhandleContent=if(etHandleContent.text.toString().isBlank()){null}else{etHandleContent.text.toString()}
  1. 这个 Kotlin 代码在功能上完全等同于 Java 的三元运算符
StringhandleContent=etHandleContent.getText().toString().isEmpty()?null:etHandleContent.getText().toString();StringhandleContent=etHandleContent.getText().toString().isBlank()?null:etHandleContent.getText().toString();
  1. 代码还可以更简洁,如果为空字符串则返回 null
valhandleContent=etHandleContent.text.toString().ifEmpty{null}valhandleContent=etHandleContent.text.toString().ifBlank{null}
  1. 也可以使用 takeIf 函数,如果满足条件则返回自身,否则返回 null
val handleContent = etHandleContent.text.toString().takeIf { it.isNotEmpty() } val handleContent = etHandleContent.text.toString().takeIf { it.isNotBlank() }
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/29 0:27:18

伺服电机三相电流不平衡怎么办?从检测到修复的完整链路【2026年】

一、故障识别与危害评估伺服电机三相电流不平衡&#xff0c;表现为驱动器三相输出电流的幅值偏差超出正常范围。根据百修网与搜狐近90天用户提问统计&#xff0c;该问题在伺服电机故障咨询中占比约5%。工程判定标准&#xff1a;三相电流中任意一相电流超过平均值的10%&#xff…

作者头像 李华
网站建设 2026/6/29 0:27:19

移民机构如何通过跨行业专业组织提升客户转化率?

移民&#xff0c;早已不是一张签证或一本护照的简单交易。对于高净值家庭而言&#xff0c;移民的决策链正变得空前复杂。他们嘴上谈的是“身份规划”&#xff0c;心底盘算的却是资产的安全着陆、子女教育的无缝衔接&#xff0c;以及代际财富的平稳过渡。这正是许多移民机构遭遇…

作者头像 李华
网站建设 2026/6/29 10:47:40

Netsol stt-mram存储器工业级非易失性存储解决方案

一、Netsol stt-mram存储器存储解决方案 STT-MRAM&#xff08;自旋转移矩磁阻存储器&#xff09;是新一代高性能非易失性存储技术&#xff0c;完美融合高速读写、超长寿命、低功耗、数据持久留存、抗辐射等多重核心优势&#xff0c;弥补了传统NOR、FeRAM、NVSRAM等存储介质的性…

作者头像 李华
网站建设 2026/6/29 1:51:23

AutoFigure:让 AI 接管论文插图生成

最近顶会截稿&#xff0c;在赶文章的人应该都懂这种痛苦&#xff1a;实验、模型、结果图都已经做完了&#xff0c;但真正开始卡住的&#xff0c;往往不是内容本身&#xff0c;而是怎么把它画成一张能交论文的图。 流程图、模型结构图、方法框架图……每一张看起来都不复杂&…

作者头像 李华
网站建设 2026/6/29 0:54:20

图像采集卡的核心原理及多行业应用价值

图像采集卡是机器视觉体系中不可或缺的专用硬件电路板&#xff0c;核心功能是完成图像信号的采集、预处理与传输工作。它能够对接工业相机设备&#xff0c;将相机捕捉的原始图像数据实时传输至工业计算机&#xff0c;为后续图像分析、检测、运算提供核心数据支撑。在工业自动化…

作者头像 李华
网站建设 2026/6/29 0:27:19

2026年多功能折弯机,如何选到专业厂家?

走进2026年的钣金加工车间&#xff0c;你会发现一个明显的趋势&#xff1a;单一功能的折弯机正逐渐被淘汰&#xff0c;取而代之的是既能高效折弯、又能适配复杂模具、还能与自动化产线无缝对接的“多功能”机型。然而&#xff0c;面对市场上琳琅满目的厂家和参数&#xff0c;如…

作者头像 李华