Unit類型,讓函數(shù)調用皆為表達式
1:java中void表示沒有返回值類型的函數(shù)
//沒有返回值的函數(shù)
void foo(){
//do ***
}
2:如何理解Kotlin中的Unit
Unit是一個類型,他不代表任何信息,他是一個單例,他的實例只有一個,可寫為()
此類型可用來做函數(shù)做為參數(shù),傳遞 或者當返回值
符合表達式
相比于語句 表達式更傾向于自成一塊,避免與上下文共享狀態(tài),相互依賴,因此我們說他具備更好的[隔離性],所以更加安全
表達式還有一定表達能力,也可以組合使用
var res:Int?=try {
if(result.success){
jsonDecode(result.response)
}else{
null
}
}catch(e: JsonDecodeException){
null
}
?: ELvis
和java的三元運算符很像
val mabyInt:Int?=null
--->> mabyInt?:1
輸出:1
中綴表達式
in,step,downTo,until,可以不通過點號,而是通過中綴表達式來調用,從而讓語法更加簡潔和直觀
A 中綴方法 B
結論:
1:該中綴方法必須是這個類型的擴展函數(shù)
2:該中綴方法只能有一個參數(shù),,參數(shù)也不可能是可變參數(shù)
3:kotlin支持默認值,中綴方法不允許有默認值,會對中綴表達式造成破壞
可變參數(shù)
kotlin使用vararga定義函數(shù)中的可變參數(shù),類似java的...;java的可變參數(shù)必須是最后一位,kotlin沒有這個限制
fun Test(vararaga str:String,count:Int){
}
infix 定義一個中綴表達式
class Test{
infix fun call(name:String){
print("my name is ${name}")
}
}
fun main (args:Array<String>){
val p =Person()
p call "Shaw"
//結果
--> my name is Shaw
}
isBlank
val str1 = " "
val str2 = "Hello World"
val str3 = ""
println(str1.isBlank()) // 輸出 true,因為字符串只包含空白
println(str2.isBlank()) // 輸出 false,因為字符串不是空且包含非空白字符
println(str3.isBlank()) // 輸出 true,因為字符串是空的