Özet - Extension function'lar
- Kotlin kursu
- Orta seviye
- Ders 41/116
- 5 dk
extension function, property ve nullable extension'ı birleştirerek bir string yardımcı extension'ı yazarsın.
Özet - Extension function'lar
Bu grupta extension function, extension property, nullable extension ve companion extension'ı öğrendin. Hepsi mevcut türlere dışarıdan metot veya özellik ekler.
Bu özette hepsini birleştirip bir String yardımcı extension seti yazacaksın. fun String.shout() ile büyük harf, val String.isLong ile uzunluk denetimi, fun String?.shoutOrEmpty() ile null-safe davranış sağlanır. Tüm parçalar bir araya geldiğinde typesafe ve kısa bir yardımcı kümesi oluşur.
Uygulama String.shout ve isLong extension'ları
fun String.shout(): String extension fonksiyonu tanımla; gövdesi uppercase() + "!" döndürsün. val String.isLong: Boolean extension property tanımla; getter'ı length > 10 döndürsün. main içinde "merhaba dünya".shout() ve "merhaba dünya".isLong değerlerini ayrı satırlarda println ile yazdır.
Başlangıç kodu
// String.shout extension tanımı
// String.isLong extension property tanımı
// main'de shout ve isLong çağır ve yazdırÖrnek çözüm
fun String.shout(): String {
return uppercase() + "!"
}
val String.isLong: Boolean
get() = length > 10
fun main() {
println("merhaba dünya".shout())
println("merhaba dünya".isLong)
}Beklenen çıktı
MERHABA DÜNYA! true
Uygulama Nullable shoutOrEmpty extension'ı
fun String?.shoutOrEmpty(): String extension fonksiyonu tanımla; gövdesi this?.uppercase() ?: "" döndürsün. main içinde "merhaba".shoutOrEmpty() çağrısının sonucunu ve val s: String? = null bildirip s.shoutOrEmpty() çağrısının sonucunu ayrı satırlarda println ile yazdır.
Başlangıç kodu
// Nullable String shoutOrEmpty extension tanımı
// null-safe büyük harf ya da boş dize döndürsün
// main'de dolu ve null değerleri yazdırÖrnek çözüm
fun String?.shoutOrEmpty(): String {
return this?.uppercase() ?: ""
}
fun main() {
println("merhaba".shoutOrEmpty())
val s: String? = null
println(s.shoutOrEmpty())
}Beklenen çıktı
MERHABA
Soru ve cevaplar
Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.
1 Bir <strong>extension property</strong>'nin neden yalnızca val olabileceğini hatırla. Sebep nedir?
- Backing field saklayamadığı için Doğru cevap
- Daha hızlı olduğu için
- Sözdiziminin izin vermediği için
- Yalnızca companion object içinde tanımlanabildiği için
Açıklama: Extension property backing field saklayamaz; bu yüzden val olur.
2 Nullable extension tanımını tamamla
fun String____.shoutOrEmpty(): String {
return this?.uppercase() ?: ""
}
fun String?.shoutOrEmpty(): String {
return this?.uppercase() ?: ""
}
Açıklama: String? nullable alıcı tanımlar.