Kotlin 擴展函數是一種在現有類上添加新功能的方法,而無需繼承該類或使用其他設計模式。通過擴展函數,我們可以為現有類添加新方法,從而增強代碼的復用性和可讀性。以下是如何使用 Kotlin 擴展函數增強代碼復用的示例:
為常見數據類型創建通用擴展函數:
假設我們需要為一個常見的數據類型(如 Int、String 等)創建一個通用的擴展函數,用于計算該類型的值的對數。我們可以這樣定義擴展函數:
fun Int.logarithm(base: Double): Double {
return Math.log(this.toDouble()) / Math.log(base)
}
fun String.logarithm(base: Double): Double {
val number = this.toDoubleOrNull() ?: throw IllegalArgumentException("Invalid number string")
return Math.log(number) / Math.log(base)
}
現在,我們可以為任何 Int 或 String 類型的值調用 logarithm
擴展函數,而無需創建新的類或實例:
val intValue = 8
val doubleValue = 16.0
val stringValue = "16"
println("Int value logarithm base 2: ${intValue.logarithm(2)}")
println("Double value logarithm base 2: ${doubleValue.logarithm(2)}")
println("String value logarithm base 2: ${stringValue.logarithm(2)}")
為特定類創建擴展函數:
假設我們有一個名為 Person
的類,我們想要為該類添加一些通用方法,以便在不同的實例之間復用這些方法。我們可以這樣定義擴展函數:
data class Person(val name: String, val age: Int)
fun Person.getFullName(): String {
return "$name ${age} years old"
}
fun Person.isAdult(): Boolean {
return age >= 18
}
現在,我們可以為任何 Person
類型的實例調用 getFullName
和 isAdult
擴展函數:
val person1 = Person("Alice", 30)
val person2 = Person("Bob", 17)
println("Person 1 full name: ${person1.fullName}")
println("Person 1 is adult: ${person1.isAdult()}")
println("Person 2 full name: ${person2.fullName}")
println("Person 2 is adult: ${person2.isAdult()}")
通過使用擴展函數,我們可以為現有類添加新方法,從而增強代碼的復用性和可讀性。同時,擴展函數還可以使我們的代碼更加簡潔,因為我們無需創建新的類或實例來實現所需的功能。