函數和Lambda表達式

Kotlin的函數

  • 可以使用var,函數的不可變性必須自己保證
  • 即可以使用流程控制語句,也可以把流程控制語句用作語法糖
  • 參數是val,很好

函數特性

  • 尾遞歸增加性能
  • 函數類型直接作為參數或者表達式,而不需要函數式接口 - 感覺需要語法糖?

Lambda表達式

  • Lambda表達式就是可以推斷出返回值類型的匿名函數的升級
  • 可以使用非final的外部變量,因為kotlin採用捕獲機制製造副本,在Lambda脱離閉包工作時,副本直接相互獨立
  • Lambda的return是退出,匿名函數到return是返回函數自身

Kotlin語法糖

類型

  • ?表示不會拋null point, !!會拋
  • 主構造函數的參數是成員變量

函數

  • 省略返回值類型
  • 單行表達式與類型推斷
  • 函數調用可以混合命名參數和位置參數
  • 參數默認值 :可以減少方法的重載 - 建議默認值參數寫在後面
  • 可變參數vararg : 不需要放最後,但只能有一個,*arr傳入數組調用

Lambda

  • 可以省略最後的return
  • 支持類型推斷
  • 甚至可以省略單個參數和->,用it代替
  • 最後一個參數是Lambda時,支持尾隨閉包,並且可以省略(),所以建議函數類型的參數放在最後,而且比可變個數參數優先