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

如何在kotlin中给空字符串(””)和null值设置默认值问题?

😄作者简介: 小曾同学.com,一个致力于测试开发的博主⛽️,主要职责:测试开发、CI/CD
如果文章知识点有错误的地方,还请大家指正,让我们一起学习,一起进步。
😊 座右铭:不想当开发的测试,不是一个好测试✌️。
如果感觉博主的文章还不错的话,还请点赞、收藏哦!👍

在开发过程中经常遇到空值导致的 Crash 问题,要是能给变量设置默认值将会避免很多的麻烦。我将介绍在Android开发中遇到的nul值和空字符串问题。

假如我们有一个dialog 界面,其中1和2 是需要设置默认值的地方,因为如果为空则会出现崩溃问题。
在这里插入图片描述

val UrlName = dialog.findViewById<EditText>(R.id.name)
val resolutionButton = dialog.findViewById<EditText>(R.id.resolution)

像上述控件中由用户所输入的内容,默认为字符串类型,当用户在UrlName位置没有输入内容时,则默认值为空字符串””,而不是 nul。接下来获取UrlName位置的数据,如果为“”的话,则设置默认值为test

val inputName = if(UrlName.text.isNullOrBlank()){
                "test"
            }else{
                UrlName.text
            }

使用 isNullOrBlank() 函数来检查字符串是否为 null 或空字符串。如果 UrlName.textnull 或空字符串,inputName 将被赋值为 “test”,否则将使用 UrlName.text 的值。

如果 UrlName.textnull,在 Kotlin 中使用 Elvis 操作符 ?:

val inputName = UrlName.text ?: "test"

在 Kotlin 中使用 Elvis 操作符 ?: 时,空字符串被视为非空值,不会被视为 null。因此,如果 UrlName.text 是空字符串,inputName 将被赋值为空字符串而不是备用值 “test”。即只有当 UrlNameUrlName.textnull 时,Elvis 操作符 ?: 才会返回备用值。

resolutionButton位置的数据获取,可以直接使用 Elvis 操作符 ?:,如下所示。

var inputText = resolutionButton.text.toString().toIntOrNull()?:720

如果说你不太确实是空字符串还是null,可以直接使用isNullOrBlank()。当然也可以分开写代码,一步步排查。

 val textValue = UrlName?.text
 val inputName = textValue ?: "test"

总之,当需要处理空值时,可以使用 toIntOrNull(),另外多了解一些 Elvis 操作符 ?: 在日常开发中真的很有用。

最近在阅读《如何阅读“奇特的一生”》,书籍中讲的时间统计法真的很有用,非常推荐给大家。

压力往往是因为你坚持了很久,却没有进展造成的。所以我每次都会设定一个小阶段目标,看到目标被我拿下,压力就变成了一定要一鼓作气拿下的决心了。

在这里插入图片描述


http://www.kler.cn/a/314259.html

相关文章:

  • ABAP开发学习——ST05 ABAP SQL跟踪工具
  • [DEBUG] 服务器 CORS 已经允许所有源,仍然有 304 的跨域问题
  • [JAVAEE] 面试题(四) - 多线程下使用ArrayList涉及到的线程安全问题及解决
  • 网络技术-定义配置ACL规则的语法和命令
  • 批量重命名Excel文件并排序
  • 基于OpenCV的自制Python访客识别程序
  • WPF 控件数据源绑定
  • 大语言模型应用的业务架构点
  • Transformer模型-7- Decoder
  • MATLAB绘图基础8:双变量图形绘制
  • Day25笔记-普通文件读写with上下文二进制文件csv文件
  • hadoop大数据平台操作笔记
  • 消息队列选型参考:Top5消息队列组件
  • Qt:智能指针QScopedPointer 的使用(以及如何写一个QScopedPointer )
  • [SDX35+WCN6856]SDX35 开启class/gpio子系统配置操作说明
  • 在Python中,类是用于定义对象的蓝图或模板,而对象则是根据类创建的具体实例
  • 【RPA私教课:UIPath】RPA 赋能科技企业,登录时验证码自动截取
  • SpringBoot 消息队列RabbitMQ 消息可靠性 数据持久化 与 LazyQueue
  • pytorch 同步机制
  • docker desktop windows stop
  • @EnableScheduling 和 @Scheduled 实现定时任务的任务延期问题
  • Linux:login shell和non-login shell以及其配置文件
  • MQ入门(4)
  • kubernetes基础命令
  • 论文阅读--Planning-oriented Autonomous Driving(一)
  • “华为杯”第十二届中国研究生数学建模竞赛-D题:面向节能的单/多列车优化决策问题研究(续)(附MATLAB代码实现)