高階函數(shù)Lambda

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,因為字符串是空的
?著作權歸作者所有,轉載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容