Kotlin的高價函數—apply、aslo、let、run的使用總結

使用總結

無規側就規則、隨心所欲、不忘初心

  1. 都可以組合使用,實現鏈式調用(apply、also基本就是builder模式語法糖)
  2. 根據下一步的鏈式調用的輸入選擇當前的高價函數(熟悉各個方法的定義),即下一步還是需要原引用,就用apply、also,否則使用let、run
  3. 記得結合?,判空操作使用!!!

方法定義

函數名稱 (捕獲)輸入 輸出
apply this 原引用
run this 函數塊的返回值
also it 原引用
let it 函數塊的返回值

函數塊的返回值是指函數塊的最後一行代碼(表達式)或retrun指定的值

使用案例

import java.text.SimpleDateFormat
import java.util.Calendar
import java.util.Locale
// 注意lastWeeksDate的類型是字符串,這個是目標/初心
val lastWeeksDate: String = Calendar.getInstance().apply { // this:Calendar
    add(Calendar.DAY_OF_YEAR, -7)
}.also { //it:Calendar
    print("created calendar of type: ${it.calendarType}")
}.let { //it:Calendar
    val format = SimpleDateFormat("dd/M/yyyy hh:mm:ss", Locale.US)
    format.format(it.time) // 函數塊的最後一行表達式是個字符串
}
# 整個鏈式操作,前兩次如builder模式模式常規劃使用,最後一個鏈式調用是變化操作,原因是我們想得到一個字符對象,also的使用我的理解是分享重要的核心的邏輯操作,組織一些無關要緊的代碼邏輯,如這個示例的日誌輸出等,apply也是引用對象的分段操作,方式業務代碼的組織與閱讀

參考資料

發佈了231 篇原創文章 · 獲贊 123 · 訪問量 67萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章