Kotlin 擴展函數(shù)是一種在現(xiàn)有類上添加新功能的方法,而無需繼承該類或使用其他設(shè)計模式。通過擴展函數(shù),我們可以為現(xiàn)有類添加新方法,從而增強代碼的復(fù)用性和可讀性。以下是如何使用 Kotlin 擴展函數(shù)增強代碼復(fù)用的示例:
為常見數(shù)據(jù)類型創(chuàng)建通用擴展函數(shù):
假設(shè)我們需要為一個常見的數(shù)據(jù)類型(如 Int、String 等)創(chuàng)建一個通用的擴展函數(shù),用于計算該類型的值的對數(shù)。我們可以這樣定義擴展函數(shù):
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)
}
現(xiàn)在,我們可以為任何 Int 或 String 類型的值調(diào)用 logarithm
擴展函數(shù),而無需創(chuàng)建新的類或?qū)嵗?/p>
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)}")
為特定類創(chuàng)建擴展函數(shù):
假設(shè)我們有一個名為 Person
的類,我們想要為該類添加一些通用方法,以便在不同的實例之間復(fù)用這些方法。我們可以這樣定義擴展函數(shù):
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
}
現(xiàn)在,我們可以為任何 Person
類型的實例調(diào)用 getFullName
和 isAdult
擴展函數(shù):
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()}")
通過使用擴展函數(shù),我們可以為現(xiàn)有類添加新方法,從而增強代碼的復(fù)用性和可讀性。同時,擴展函數(shù)還可以使我們的代碼更加簡潔,因為我們無需創(chuàng)建新的類或?qū)嵗齺韺崿F(xiàn)所需的功能。