Kotlin Android 第6天,从 0 到 ML - null safety
如果有写java 的朋友,一定有写过一堆来判断null的程序,来防止程序runtime的时候出会错,kotlin null safety 这个语法真的在判断null 上一大救星,也是回不去java的一大特点。
不行设定为null, IDE会提示你不行为null
var ironAfterDay:String = "This is Day6 Null Safety"
ironAfterDay = null
要允许设为 null 要加上?
var ironAfterDay:String? = null
判断或是操作变数就要
改用下列三种方式
if (ironAfterDay != null) {
println("ironAfterDay size"+ironAfterDay.length)
}
println("ironAfterDay size"+ (ironAfterDay?.length))
println("ironAfterDay size"+ (ironAfterDay?.length ?: "day6"))
但真的硬要给null ,要加上!! ,但真的是null app 就会 crash
println("ironAfterDay size"+ (ironAfterDay!!.length)) // Carsh
Elvis 操作符号,像是if else ,如果 ironAfterDay为null ,就给一个预设值。
//ironAfterDay = null
println("ironAfterDay = "+ironAfterDay)
//public inline fun Any?.toString() = this?.toString() ?: "null"
null 函式呼叫
//call function
println("ironAfterDayLength = "+ ironAfterDayLength(ironAfterDayNull(ironAfterDay)))
println("ironAfterDayLength = "
+ ironAfterDayNull(ironAfterDay)?.let { ironAfterDayLength(it) })
}
//Function allow return null
private fun ironAfterDayNull(ironAfterDay: String):String?{
return null
}
允许传入函式的参数为 null,在函式内就要判断,或是直接 throw Exception,两种方式
//Function allow parameter null , need add argument process null
private fun ironAfterDayLength(ironAfterDay: String?):Int{
//case 1 return 0
if (ironAfterDay != null) {
return ironAfterDay.length
}else{
return 0
}
//case 2 add throw Exception
if (ironAfterDay == null) {
throw Exception("ironAfterDay is Null")
}
return ironAfterDay.length
}
null safety 叫 空安全,还是用英文好了,翻中文真的很怪。
现在要android studio 故意要null的范例,还真的有点不好写,不用等到build,直接就检查不过给你红字呀。
https://kotlinlang.org/docs/null-safety.html
<<: EP 3: Use Shell to layout TopStore App
>>: Day 11 - Rancher 丛集管理指南 - Monitoring 介绍
Day14-15 一共会介绍 Ruby的2类、4种继承方式。 在Day2 我们提到 Ruby 为单一...
此系列文章会同步发文到个人部落格,有兴趣的读者可以前往观看喔。 在 E2E 测试中,不仅有选取元素...
Web 框架提供 API 让开发者读取设定档是基本的必备功能,以 Spring 框架为例,从最早只支...
嘿~~ 各位好,我是菜市场阿龙! 这集要介绍的是「泡泡排序(Bubble Sort)演算法的实作」 ...
随着 Component Driven 兴起,元件化变为不可逆的趋势,在元件化後的可替换性与重复利用...