Kotlin空安全:使用Elvis与!!操作符实现nullable空值校验函数
Kotlin空安全题目实现
题目要求
完成nullable函数编写,必须同时用到Kotlin的Elvis操作符和!!非空断言操作符,逻辑规则如下:
- 入参为非空字符串时,返回字符串长度
- 入参为
null时,返回-1 - 不得修改题目给出的
main函数原有框架代码
给定基础代码
fun nullable(nullableString: String?): Int { } fun main(args: Array<String>) { val str = readLine()!! var result = -100 if(str=="null") { result = nullable(null) }else result = nullable(str) println(result) }
正确实现代码
只需要补全nullable函数内部逻辑即可,补全后完整代码如下:
fun nullable(nullableString: String?): Int { // 用Elvis操作符先处理空值分支:入参为null直接返回-1 val nonNullStr = nullableString ?: return -1 // 走到此处入参必然非空,用!!断言后取长度返回 return nonNullStr!!.length } fun main(args: Array<String>) { val str = readLine()!! var result = -100 if(str=="null") { result = nullable(null) }else result = nullable(str) println(result) }
实现说明
- Kotlin里的
?:就是Elvis操作符,左侧值为null时会直接执行右侧逻辑,这里用来做前置空拦截,符合空值返回-1的要求 !!是非空断言操作符,用来把可空类型强转为非空类型,前面已经做空值判断拦截了null情况,这里用断言不会触发空指针异常,满足题目要求必须使用该操作符的规则- 程序运行逻辑:控制台输入普通字符串时,函数返回字符串长度;输入内容为
null时,函数返回-1
内容的提问来源于stack exchange,提问作者Umashankar
相关产品推荐
相关产品推荐

