Method
- Kotlin kursu
- Orta seviye
- Ders 78/116
- 5 dk
value class içinde metot tanımlamayı öğrenirsin.
value class metotları
Bir value class, normal sınıflar gibi metot içerebilir. Örnek: @JvmInline value class UserId(val id: String) { fun display() = println("User: $id") }. Metot, sarmalanan değere id özelliği ile erişir.
Value class içinde this sarmalanan değeri temsil eder. Metotlar uzantı (extension) olarak da eklenebilir. Bu, değere davranış katmanın temiz yoludur: tür güvenliği ve davranış tek tanımda birleşir. Çalışma zamanında metot çağrısı statik olarak çözümlenir; ek yük yoktur.
Metot ve iç erişim
Value class içindeki bir metot, sarmalanan değere doğrudan erişir. fun display() = println("User: $id") satırında id özelliği sarmalanan değerdir. Açıkça this.id de yazılabilir.
Metotlar dönüş değeri de döndürebilir: fun uppercase() = id.uppercase() yeni bir String döndürür. Value class metotları çalışma zamanında inline edildiği için çağrı ek yükü yoktur. Bu, küçük yardımcı metotları value class içine koymayı verimli kılar.
Uygulama UserId'ye display metodu ekle
@JvmInline value class UserId(val id: String) tanımla; içinde fun display() = println("User: $id") olsun. main içinde val u = UserId("U1") oluştur ve u.display() çağır.
Başlangıç kodu
// UserId değer sınıfını tanımla: display metodu ile
// display metodu: User: $id yazsın
fun main() {
// UserId örneği oluştur ve display çağır
}Örnek çözüm
@JvmInline
value class UserId(val id: String) {
fun display() = println("User: $id")
}
fun main() {
val u = UserId("U1")
u.display()
}Beklenen çıktı
User: U1
Soru ve cevaplar
Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.
1 metot parçalarını eşle
| Kavram | Anlamı |
|---|---|
fun display() |
Metot |
value class |
Sarmalayıcı |
val id |
Alan |
this.id |
İç erişim |
2 Bir value class metot içerebilir mi?
- Evet Doğru cevap
- Hayır
- Yalnızca static
- Yalnızca getter
Açıklama: value class normal sınıf gibi metot içerebilir.
3 display gövdesini tamamla
@JvmInline
value class UserId(val id: String) {
fun display() = println("User: $____")
}
@JvmInline
value class UserId(val id: String) {
fun display() = println("User: $id")
}
Açıklama: display id özelliğini yazdırır.