Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >【Kotlin】空安全 ④ ( 手动空安全管理 | 空合并操作符 ?: | 空合并操作符与 let 函数结合使用 )

【Kotlin】空安全 ④ ( 手动空安全管理 | 空合并操作符 ?: | 空合并操作符与 let 函数结合使用 )

作者头像
韩曙亮
发布于 2023-03-30 10:39:18
发布于 2023-03-30 10:39:18
89200
代码可运行
举报
运行总次数:0
代码可运行
文章目录

一、空合并操作符 ?:


空合并操作符 ?: 用法 :

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
表达式 A ?: 表达式 B

如果 表达式 A 的值 不为 null , 则 整个表达式的值 就是 表达式 A 的值 ;

如果 表达式 A 的值 为 null , 则 整个表达式的值 就是 表达式 B 的值 ;

代码示例 : 在下面的代码中 ,

name 变量 被声明为 String? 可空类型的变量 , 为其赋值为 null ,

使用 name ?: "name 变量为空" 代码 , 其效果如下 :

空合并操作符 左侧的 name 表达式如果为 null , 则 取 右边的 表达式 作为该表达式最终的值 ,

如果 左侧的 name 表达式 不为 null , 则 取 该 name 变量作为 该表达式最终的值 ;

因此 , 第一次使用 name ?: "name 变量为空" 代码时 , name 为空 , 整个表达式 name ?: "name 变量为空" 返回的是 "name 变量为空" 值 , 打印出来的就是 name 变量为空 内容 ;

之后 为 name 变量赋值 "Tom" 字符串值 , 现在 name 变量不为空 , 使用 name ?: "name 变量为空" 代码返回的是 name 变量的值 , 因此打印出来的就是 Tom 内容 ;

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
fun main() {
    var name: String? = null
    println(name ?: "name 变量为空")

    name = "Tom"
    println(name ?: "name 变量为空")
}

执行结果 :

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
name 变量为空
Tom

二、空合并操作符与 let 函数结合使用


空合并操作符 ?: 与 let 函数 结合使用 , 可以 替代 if .. else .. 语句 ;

代码示例 :

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
fun main() {
    var name: String? = null

    name = "tom"
    name = name?.let {
        it.capitalize()
    } ?: "Jerry"

    println(name)
}

执行结果 :

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
Tom

如果 name 变量为 null , 则 ?: 表达式中 , 会选择 ?: 后面的表达式作为最终结果 ;

对应代码如下 :

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
fun main() {
    var name: String? = null

    name = name?.let {
        it.capitalize()
    } ?: "Jerry"

    println(name)
}

执行结果 :

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
Jerry
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2023-01-08,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
【Kotlin】扩展函数 ( 扩展函数声明 | 调用方式 | 与成员函数优先级 | 接收者空值处理 )
② 扩展函数调用方式 : 父类和子类定义了相同函数签名的扩展函数 , 根据变量声明的类型调用对应的扩展函数 , 不根据变量的实际类型调用 ;
韩曙亮
2023/03/27
8190
【Kotlin】标准库函数总结 ( apply 函数 | let 函数 | run 函数 | with 函数 | also 函数 | takeIf 函数 | takeUnless 函数 )
Kotlin 语言中 , 在 Standard.kt 源码中 , 为所有类型定义了一批标准库函数 , 所有的 Kotlin 类型都可以调用这些函数 ;
韩曙亮
2023/03/30
2.9K0
【Kotlin】标准库函数总结 ( apply 函数 | let 函数 | run 函数 | with 函数 | also 函数 | takeIf 函数 | takeUnless 函数 )
【Kotlin】空安全总结 ( 变量可空性 | 手动空安全管理 | 空安全调用操作符 | 非空断言操作符 | 空合并操作符 | 空指针异常处理 | 先决条件函数判空 )
在 Java 语言 编写的程序中 , 出现最多的崩溃就是 NullPointerException 空指针异常 ,
韩曙亮
2023/03/30
1.9K0
【Kotlin】空安全总结 ( 变量可空性 | 手动空安全管理 | 空安全调用操作符 | 非空断言操作符 | 空合并操作符 | 空指针异常处理 | 先决条件函数判空 )
【Kotlin】空安全 ② ( 手动空安全管理 | 空安全调用操作符 ? | let 函数结合空安全调用操作符使用 )
文章目录 一、手动空安全管理 二、空安全调用操作符 ? 三、let 函数结合空安全调用操作符使用 一、手动空安全管理 Kotlin 语言中 , 变量类型 分为 可空类型 和 非空类型 , 默认状态 下
韩曙亮
2023/03/30
6370
【Kotlin】空安全 ② ( 手动空安全管理 | 空安全调用操作符 ? | let 函数结合空安全调用操作符使用 )
【Kotlin】变量简介 ( 可空类型 | lateinit | 初始化判定 | 非空类型 | !! 与 ? 修饰符 | ?= ?. ?: 运算符 | 抽象属性变量)
初学 Kotlin , 对变量机制不清楚的同学们 , 看完这篇博客基本就对变量的定义和使用有清晰的认识 ;
韩曙亮
2023/03/27
2.8K0
【Kotlin】变量简介 ( 可空类型 | lateinit | 初始化判定 | 非空类型 |  !! 与 ? 修饰符 | ?= ?. ?: 运算符 | 抽象属性变量)
【Kotlin】字符串操作 ② ( 字符串替换函数 replace | 字符串比较操作符 == 和 === | 字符串遍历 forEach )
对应代码中的 Regex("[ol]") , 该正则表达式的含义是 单个字符 o 或者 l ;
韩曙亮
2023/03/30
1.7K0
【Kotlin】字符串操作 ② ( 字符串替换函数 replace | 字符串比较操作符 == 和 === | 字符串遍历 forEach )
【Kotlin】函数式编程 ② ( 过滤函数 | predicate 谓词函数 | filter 过滤函数 | 合并函数 | zip 函数 | folder 函数 | 函数式编程意义 )
在上一篇博客 函数式编程 ① 中 讲解了 变换函数 map 函数 与 flatMap 函数 , 本篇博客中着重讲解 过滤函数 和 合并函数 ;
韩曙亮
2023/03/30
2.1K0
【Kotlin】函数式编程 ② ( 过滤函数 | predicate 谓词函数 | filter 过滤函数 | 合并函数 | zip 函数 | folder 函数 | 函数式编程意义 )
【Kotlin】空安全 ③ ( 手动空安全管理 | 非空断言操作符 !! | 使用 if 语句判空 )
Kotlin 中的 可空类型 变量 , 在运行时 可以选择 不启用 安全调用 操作 ,
韩曙亮
2023/03/30
2K0
【Kotlin】空安全 ③ ( 手动空安全管理 | 非空断言操作符 !! | 使用 if 语句判空 )
Kotlin实用的语法糖:空安全、类型转换 & 相等性判断
Kotlin被Google官方认为是Android开发的一级编程语言。今天,我将主要讲解,关于Kotlin的一些实用语法糖,主要包括:
Carson.Ho
2020/03/25
1.3K0
Kotlin实用的语法糖:空安全、类型转换 & 相等性判断
【翻译】Kotlin致简代码之路
2017-06-30 by Liuqingwen | Tags: Kotlin 翻译 | Hits
IT自学不成才
2019/01/07
1.5K0
【Kotlin】Kotlin 基础语法指南
在 Kotlin 中,变量使用 var 声明,而常量则使用 val 声明。val 表示的变量在初始化后不能再修改,而 var 则可以在之后重新赋值。
人不走空
2024/07/13
1600
Kotlin基本语法和使用技巧
take是从集合中取前几个元素 takeLast是从集合中取后几个元素 sortedBy 排序 过滤list,符合过滤条件的就是过滤结果 filterNot把符合条件的过滤掉,剩下的是结果。这个操作和 filter 相反 slice,取集合中的某一部分
六月的雨
2020/03/27
8820
Kotlin热身篇: 简介与基本用法
改不完的 Bug,写不完的矫情。公众号 杨正友 现在专注移动基础平台开发 ,涵盖音视频, APM和信息安全等各个知识领域;只做全网最 Geek 的公众号,欢迎您的关注!精彩内容不容错过~ 一. kotlin 简介 Kotlin 拥有强大的生态,因为 Kotlin 是一门跑在 Java 虚拟机上的函数式语言,完全符合 JVM 的设计规范,如: 类型擦除,装箱和拆箱等等。所以也可以像 Java 一样支持 Android 原生环境开发,服务端,甚至大前端方向。那么 Kotlin 和 Java 有什么共同点
小木箱
2020/11/25
1.6K0
【Kotlin】扩展函数总结 ★ ( 超类扩展函数 | 私有扩展函数 | 泛型扩展函数 | 扩展属性 | 定义扩展文件 | infix 关键字用法 | 重命名扩展函数 | 标准库扩展函数 )
为 现有类 定义 扩展函数 , 可以在 不修改 原有类 的情况下 增加类的功能 ;
韩曙亮
2023/03/30
2.9K0
【Kotlin】扩展函数总结 ★ ( 超类扩展函数 | 私有扩展函数 | 泛型扩展函数 | 扩展属性 | 定义扩展文件 | infix 关键字用法 | 重命名扩展函数 | 标准库扩展函数 )
kotlin基础--null安全、异常、先决条件
使用Java时,我们需要大量的判断一个变量是否为null,否则使用是会抛出NullPointer异常。 而kotlin使用null给一个变量赋值时,在编译时,就会报错,来防止发生这种异常
aruba
2021/12/06
5630
kotlin基础--null安全、异常、先决条件
抱歉!不要用Java的语法思维来写Kotlin
如果你是像我一样是一名 优秀的Java开发者 ^_^,而且已经想用kotlin来实现你的程序,那么,抱歉!不要用Java的语法思维来写Kotlin,不要让kotlin的优雅埋没。如果你没有Java开发经验,下面的内容也对你会有帮助。。。
全科
2018/08/15
3K0
《Kotlin极简教程》第3章 Kotlin语言基础第3章 Kotlin语言基础《Kotlin极简教程》正式上架:参考资料
学习任何东西,都是一个由表及里的过程。学习一门编程语言也一样。对于一门编程语言来说,“表” 就是基本词汇(关键字、标识符等)、句子(表达式)和语法。
一个会写诗的程序员
2018/08/17
1.7K0
Kotlin语法基础之运算符
运算符 计算机程序中最小的程序单位成为表达式,每个表达式都可以由两部分组成,即操作数和运算符。操作数可以是变量、常量、类、数组、方法等,甚至是其他表达式。而运算符则用于支出表达式中单个或者多个操作数参与运算的规则,表达式通过运算之后产生的值依赖于表达式中包含的运算符的优先级和结核性。Kotlin语言包含了Java语言中的所有运算符的特性,并结合C语言的优点,增加自定义运算符的逻辑。这些运算符之中,主要包括有:算数运算符、区间运算符、逻辑运算符、关系运算符、赋值运算符、自增自减运算符等。 根据操作数的数量来划
xiangzhihong
2018/02/06
3K0
Kotlin语法基础之运算符
【Kotlin】集合操作总结 ( List 集合 | MutableList 集合 | List 集合遍历 | Set 集合 | MutableSet 集合 | Map 集合 | 可变 Map集合 )
调用 listOf 函数 , 可以 直接创建 List 集合 ; 通过 [] 下标可以 直接获取 List 集合中的元素 ;
韩曙亮
2023/03/30
6.3K0
【Kotlin】集合操作总结 ( List 集合 | MutableList 集合 | List 集合遍历 | Set 集合 | MutableSet 集合 | Map 集合 | 可变 Map集合 )
TypeScript 空值合并运算符(??)
一、一个简单的组件 让我们从一个简单的组件开始: type Person = { name: string, subscription?: Subscription }; type Subs
阿宝哥
2020/03/18
3.6K0
推荐阅读
【Kotlin】扩展函数 ( 扩展函数声明 | 调用方式 | 与成员函数优先级 | 接收者空值处理 )
8190
【Kotlin】标准库函数总结 ( apply 函数 | let 函数 | run 函数 | with 函数 | also 函数 | takeIf 函数 | takeUnless 函数 )
2.9K0
【Kotlin】空安全总结 ( 变量可空性 | 手动空安全管理 | 空安全调用操作符 | 非空断言操作符 | 空合并操作符 | 空指针异常处理 | 先决条件函数判空 )
1.9K0
【Kotlin】空安全 ② ( 手动空安全管理 | 空安全调用操作符 ? | let 函数结合空安全调用操作符使用 )
6370
【Kotlin】变量简介 ( 可空类型 | lateinit | 初始化判定 | 非空类型 | !! 与 ? 修饰符 | ?= ?. ?: 运算符 | 抽象属性变量)
2.8K0
【Kotlin】字符串操作 ② ( 字符串替换函数 replace | 字符串比较操作符 == 和 === | 字符串遍历 forEach )
1.7K0
【Kotlin】函数式编程 ② ( 过滤函数 | predicate 谓词函数 | filter 过滤函数 | 合并函数 | zip 函数 | folder 函数 | 函数式编程意义 )
2.1K0
【Kotlin】空安全 ③ ( 手动空安全管理 | 非空断言操作符 !! | 使用 if 语句判空 )
2K0
Kotlin实用的语法糖:空安全、类型转换 & 相等性判断
1.3K0
【翻译】Kotlin致简代码之路
1.5K0
【Kotlin】Kotlin 基础语法指南
1600
Kotlin基本语法和使用技巧
8820
Kotlin热身篇: 简介与基本用法
1.6K0
【Kotlin】扩展函数总结 ★ ( 超类扩展函数 | 私有扩展函数 | 泛型扩展函数 | 扩展属性 | 定义扩展文件 | infix 关键字用法 | 重命名扩展函数 | 标准库扩展函数 )
2.9K0
kotlin基础--null安全、异常、先决条件
5630
抱歉!不要用Java的语法思维来写Kotlin
3K0
《Kotlin极简教程》第3章 Kotlin语言基础第3章 Kotlin语言基础《Kotlin极简教程》正式上架:参考资料
1.7K0
Kotlin语法基础之运算符
3K0
【Kotlin】集合操作总结 ( List 集合 | MutableList 集合 | List 集合遍历 | Set 集合 | MutableSet 集合 | Map 集合 | 可变 Map集合 )
6.3K0
TypeScript 空值合并运算符(??)
3.6K0
相关推荐
【Kotlin】扩展函数 ( 扩展函数声明 | 调用方式 | 与成员函数优先级 | 接收者空值处理 )
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验