Kotlin擴充套件函式
- 擴充套件函式:在不修改某個類的原始碼的情況下,仍然可以開啟這個類,向該類中新增新的函式。
比如說,我們在Android開發中經常用到Toast,每次建立一個Toast的時候,又要傳入上下文,還要傳入內容,還要時間長短,最後還得寫個show,有時候show忘記寫了還一臉懵逼的不知道為啥不彈出來,於是可以封裝一個ToastUtil來管理toast:
public class ToastUtil {
public static void showToast(String msg) {
Toast.makeText(MyApplication.getContext(), msg, Toast.LENGTH_SHORT).show();
}
}
這種寫法絕對可以正常工作,並且這也是JAVA 程式設計中最標準的實現思維,但是有了擴充套件函式之後就不一樣了,我們可以使用一種更加物件導向的思維來實現這個功能,比如說將showToast()新增到String類當中。
擴充函式的標準定義語法為:
fun ClassName.methodName(param1: Int,param2: Int): Int {
}
可以看到,要定義擴充函式的話,只需要在方法名前加一個ClassName.的語法結構,就表示將該函式新增到指定類當中了。
由於我們要向String類中新增擴充套件函式,所以先新建一個類叫String,名字隨便無所謂,但是為了規範吧,要新增什麼類的擴充套件函式就命名成什麼類叭:
fun String.showToast() {
Toast.makeText(MyApplication.context, this, Toast.LENGTH_SHORT).show()
}
**注意一定要是頂層方法!!!**千萬不要寫在String類面了,不然是無效的。
那現在我們再想彈一個Toast的話,可以這麼寫:
"我是一個測試Toast".showToast()
當然不止String了,這只是個例子,你還可以為別的物件新增擴充套件函式。
說起來,我在寫Flutter的時候,Dart的擴充套件函式我就不怎麼喜歡,因為要手動導包,不像Kotlin這樣寫在頂層方法就可以直接呼叫了
相關文章
- 【Kotlin】擴充套件屬性、擴充套件函式Kotlin套件函式
- kotlin 擴充套件(擴充套件函式和擴充套件屬性)Kotlin套件函式
- Kotlin-常用擴充套件函式Kotlin套件函式
- Kotlin基礎 — 擴充套件函式Kotlin套件函式
- 使用Kotlin擴充套件函式擴充套件Spring Data案例Kotlin套件函式Spring
- Kotlin的幾個擴充套件函式Kotlin套件函式
- Kotlin委託 & 擴充套件 & 高階函式Kotlin套件函式
- 奇技淫巧之Kotlin 擴充套件函式(一)Kotlin套件函式
- Kotlin擴充套件函式與屬性原理解析Kotlin套件函式
- Kotlin 常見內聯擴充套件函式的使用Kotlin套件函式
- 淺談Kotlin語法篇之擴充套件函式(五)Kotlin套件函式
- Z 函式(擴充套件KMP)函式套件KMP
- es6-函式擴充套件函式套件
- HIVE自定義函式的擴充套件Hive函式套件
- 一個減法的故事:Kotlin 擴充套件函式 ,Operator 和 效能優化Kotlin套件函式優化
- ES6之函式的擴充套件函式套件
- PHP的Sodium加密擴充套件函式了解PHP加密套件函式
- JMeter擴充套件開發:自定義函式JMeter套件函式
- PHP的SPL擴充套件庫(四)函式PHP套件函式
- 擴充套件表示式套件
- [開發效率]Kotlin之擴充套件Kotlin套件
- PHP的Mhash擴充套件函式的學習PHP套件函式
- 寫擴充套件性好的程式碼:函式套件函式
- 編寫自己的php擴充套件函式 (轉)PHP套件函式
- 尤拉函式、整除分塊和擴充套件歐幾里得函式套件
- From Java To Kotlin:空安全、擴充套件、函式、Lambda很詳細,這次終於懂了JavaKotlin套件函式
- 重學ES6 函式的擴充套件(上)函式套件
- ES6入門之函式的擴充套件函式套件
- P5410 【模板】擴充套件 KMP(Z 函式)套件KMP函式
- 編寫自己的php擴充套件函式(一) (轉)PHP套件函式
- Kotlin實戰:用實戰程式碼更深入地理解預定義擴充套件函式Kotlin套件函式
- 轉向Kotlin——列舉類和擴充套件Kotlin套件
- 漫畫:Kotlin 的擴充套件細節探究Kotlin套件
- Flutter巢狀深?擴充套件函式了解一下Flutter巢狀套件函式
- 學習PHP中統計擴充套件函式的使用PHP套件函式
- Android - 利用擴充套件函式為Bitmap新增文字水印Android套件函式
- 充分利用Windows API擴充套件Delphi函式 (轉)WindowsAPI套件函式
- Kotlin-擴充套件函式use,forEachLine(第一行程式碼Kotlin學習筆記番外)Kotlin套件函式行程筆記