Kotlin的幾個擴充套件函式
Kotlin有一個名為“擴充套件函式”的好功能- 為現有類新增新功能,無需繼承或編寫大量樣板程式碼。Kotlin允許擴充套件函式和擴充套件屬性。
下面是一個Float類的擴充套件,透過新增一個新函式來呼叫asDollars()浮點數作為貨幣值:
fun Float?.asDollars() = "USD%.2f".format(this ?: 0.0F) |
在程式碼中可以呼叫:
val money = 42.0F println( money.asDollars() ) // will print "USD42.00" |
注意:擴充套件函式不會真正修改現有類。相反,接收器物件在編譯期間作為第一個引數傳遞。有關更多資訊,請參閱:擴充套件函式是靜態解析的。
以下是我在Android中的許多專案中使用的一些自己的擴充套件:
1.AlertDialogs
fun Context.showAlertDialog( title: String, message: String, ok: Pair<String,()->Unit>, cancel: Pair<String,()->Unit>? = null){ val builder = AlertDialog.Builder(this) .setTitle(title) .setMessage(message) .setCancelable(false) .setPositiveButton(ok.first) { _,_ -> ok.second() } cancel?.let{ builder.setNegativeButton(it.first) { _, _ -> it.second() } } builder.create().show() } fun Context.showConfirmDialog( title: String, message: String, ok: Pair<String,()->Unit>, cancel: Pair<String,()->Unit>? = null ) = showAlertDialog(title, message, ok, cancel) fun Context.showErrorDialog(message: String, action: () -> Unit){ showAlertDialog( title = "Error", message = message, ok = "OK" to action ) } |
呼叫:
fun onResume(){ showAlertDialog( title = "Welcome", message = "Hello, welcome to the show! Do you want to proceed?", ok = "Yes" to { nextScreen() }, cancel = "No" to { finish() } ) // showing an error showError("No internet connection. Please try later") { finish() } } |
2.一個簡單的點選監聽器
inline fun View.onClick(crossinline f: ()-> Unit) = this.setOnClickListener { f() } |
用法:
btnNext.onClick { nextScreen() } |
3.EditText驗證
fun isValidText(s: String?) = s!=null && !s.isEmpty() fun isValidEmail(s: String?) = isValidText(s) && android.util.Patterns.EMAIL_ADDRESS.matcher(s).matches() fun EditText.trimmedText() = this.text?.trim().toString() fun EditText.isValidText() = isValidText(this.trimmedText()) fun EditText.isValidEmail() = isValidEmail(this.trimmedText()) |
用法:
isValidForm = editEmail.isValidEmail() && editUsername.isValidText() |
相關文章
- Kotlin擴充套件函式Kotlin套件函式
- 【Kotlin】擴充套件屬性、擴充套件函式Kotlin套件函式
- kotlin 擴充套件(擴充套件函式和擴充套件屬性)Kotlin套件函式
- 使用Kotlin擴充套件函式擴充套件Spring Data案例Kotlin套件函式Spring
- Kotlin-常用擴充套件函式Kotlin套件函式
- 奇技淫巧之Kotlin 擴充套件函式(一)Kotlin套件函式
- Kotlin擴充套件函式與屬性原理解析Kotlin套件函式
- 一個減法的故事:Kotlin 擴充套件函式 ,Operator 和 效能優化Kotlin套件函式優化
- 淺談Kotlin語法篇之擴充套件函式(五)Kotlin套件函式
- Z 函式(擴充套件KMP)函式套件KMP
- HIVE自定義函式的擴充套件Hive函式套件
- es6-函式擴充套件函式套件
- PHP的SPL擴充套件庫(四)函式PHP套件函式
- ES6之函式的擴充套件函式套件
- PHP的Sodium加密擴充套件函式了解PHP加密套件函式
- PHP的Mhash擴充套件函式的學習PHP套件函式
- 尤拉函式、整除分塊和擴充套件歐幾里得函式套件
- [開發效率]Kotlin之擴充套件Kotlin套件
- JMeter擴充套件開發:自定義函式JMeter套件函式
- 漫畫:Kotlin 的擴充套件細節探究Kotlin套件
- ES6入門之函式的擴充套件函式套件
- 重學ES6 函式的擴充套件(上)函式套件
- 擴充套件表示式套件
- From Java To Kotlin:空安全、擴充套件、函式、Lambda很詳細,這次終於懂了JavaKotlin套件函式
- Kotlin-擴充套件函式use,forEachLine(第一行程式碼Kotlin學習筆記番外)Kotlin套件函式行程筆記
- P5410 【模板】擴充套件 KMP(Z 函式)套件KMP函式
- 擴充套件歐幾里得套件
- 學習PHP中統計擴充套件函式的使用PHP套件函式
- Kotlin實戰:用實戰程式碼更深入地理解預定義擴充套件函式Kotlin套件函式
- PHP擴充套件開發就是一個自己的PHP擴充套件PHP套件
- Android - 利用擴充套件函式為Bitmap新增文字水印Android套件函式
- 轉向Kotlin——列舉類和擴充套件Kotlin套件
- Spring中11個最常用的擴充套件點,你知道幾個?Spring套件
- PHP的命令列擴充套件Readline相關函式學習PHP命令列套件函式
- Kotlin中的幾個常用函式let with run also applyKotlin函式APP
- 學習一個PHP中用於檢測危險函式的擴充套件TaintPHP函式套件AI
- Kotlin學習快速入門(7)——擴充套件的妙用Kotlin套件
- Kotlin的裝飾者模式與原始碼擴充套件Kotlin模式原始碼套件