kotlin類型安全
fun getName():String?{ //String可空類型
return null
}
fun main(args:Array<String>){
var name = getName()?:return //返回null則return
println(name.length) //智能類型推斷,所以不用?.
}
var value:String? = "hello" //確定可空類型有值
print(value!!.length) //強制拆箱
kotlin常用操作符
- Elvis操作符 ?:
如果?:左邊表達式非空,elvis返回左邊結果,否則返回右邊結果
val a = b?.length?:-1
==> val a:Int = if(b!=null) return b.length else -1
- 安全轉換as?
使用as轉型時,可能會報出ClassCastExceptions,使用as?安全轉型,
轉型不成功會返回null.
person: Person = Child()
if (person is Child) { //person是Child的實例
println(person.name)
}
val parent: Person = Person()
val child: Child? = parent as? Child //轉型失敗,不拋異常,返回null值
println(child)
- 類型判斷符 is
檢查某個實例是某一個類型,如果判斷屬於某一個類型,判斷後的分支可直接當該類型使用,無需顯示轉換
person: Person = Child()
if (person is Child) { //person是Child的實例
println(person.name)
}
if(i in 1..10){ ==> 1 <= i && i <= 10
println(i)
}
for(i in 4 downTo 1){ // downTo倒敘
println(i) ==> 4,3,2,1
}
for(i in 1..4 setp 2){ //setp疊加係數
println(i) ==>1,3
}