field ile Özel Get ve Set İşlevleri
Destekleyen alan anahtar sözcüğünü kullanarak hesaplanan özellikler ve özel setter'lar yazın.
field ile Özel Get ve Set İşlevleri, CoddyKit'te ücretsiz bir Kotlin Academy dersidir. Bu, 4 dersinin 3. dersidir. Aşağıdan dersin tamamını ücretsiz okuyabilir, sonra tarayıcıda yerleşik kod editörü ve 7/24 yapay zeka koçu ile uygulamalı olarak pratik yapabilirsin. Bu, Kotlin Academy öğrenme yolunun bir parçasıdır ve ilerlemeniz web ve CoddyKit uygulaması arasında senkronize olur. Kotlin Academy kursu toplamda 4 dersten oluşur.
Özellikler Yalnızca Alanlardan İbaret Değildir
Her Kotlin özelliğinin otomatik oluşturulan bir alıcısı ve var için bir ayarlayıcısı vardır. Doğrulama, günlükleme veya hesaplama gibi mantıklar eklemek için bunları geçersiz kılabilirsiniz.
Özel Alıcı
Değer her okunduğunda hesaplanması için get() işlevini geçersiz kılın.
class Circle(val radius: Double) {
val area: Double
get() = Math.PI * radius * radius
}
fun main() {
val c = Circle(3.0)
println(c.area) // ~28.27
}Hesaplanan Özellikler
Hesaplanan özelliklerin destek alanı yoktur; değerleri her erişimde hesaplanır.
class Rectangle(val w: Int, val h: Int) {
val area get() = w * h
val perimeter get() = 2 * (w + h)
}
fun main() {
val r = Rectangle(3, 4)
println("${r.area}, ${r.perimeter}") // 12, 14
}field ile Özel Ayarlayıcı
Özel bir ayarlayıcının içinde field, destek alanını, yani gerçek depolama alanını ifade eder.
class Temperature {
var celsius: Double = 0.0
set(value) {
require(value >= -273.15) { "below absolute zero" }
field = value
}
}
fun main() {
val t = Temperature()
t.celsius = 25.0
println(t.celsius)
// t.celsius = -300.0 // throws
}Destek Alanı Otomatik Oluşturulur
Alıcı veya ayarlayıcı field kullanıyorsa Kotlin bir destek alanı oluşturur. İkisi de kullanmıyorsa alan oluşturulmaz; özellik tamamen hesaplanır.
class Counter {
var count: Int = 0
set(value) {
println("Setting count from $field to $value")
field = value
}
}
fun main() {
val c = Counter()
c.count = 5
c.count = 10
}Yan Etkili Ayarlayıcı
Günlükleme, değişiklik bildirimi veya ilişkili durumun eşzamanlanması için özel ayarlayıcılar kullanın.
class Brightness {
var level: Int = 50
set(value) {
val clamped = value.coerceIn(0, 100)
println("Brightness -> $clamped")
field = clamped
}
}
fun main() {
val b = Brightness()
b.level = 75
b.level = 150 // clamps to 100
println(b.level)
}Özel Ayarlayıcı
Dahili değişikliğe izin verirken salt okunur bir arayüz sunmak için ayarlayıcıyı private olarak işaretleyin.
class Score {
var value: Int = 0
private set
fun increment() { value++ }
fun reset() { value = 0 }
}
fun main() {
val s = Score()
s.increment(); s.increment()
println(s.value) // 2
// s.value = 100 // ERROR: setter is private
}Ayarlayıcıda Doğrulama
Özel ayarlayıcılar, giriş doğrulaması için doğal yerdir.
class Email {
var address: String = ""
set(value) {
require(value.contains("@")) { "invalid email" }
field = value
}
}
fun main() {
val e = Email()
e.address = "ada@example.com"
println(e.address)
}Mantık İçeren Alıcı
Alıcılar depolanan durumu dönüştürebilir; örneğin depolanan bir değeri biçimlendirebilir veya varsayılan geri dönüşü uygulayabilir.
class Profile(_name: String?) {
var rawName: String? = _name
val displayName: String
get() = rawName ?: "(unset)"
}
fun main() {
val p = Profile(null)
println(p.displayName) // (unset)
}Sabit ve Değişkenin Karşılaştırılması
val özelliklerinin yalnızca alıcısı vardır, ayarlayıcısı yoktur; var özelliklerinin ise ikisi de vardır.
class Box {
val readOnly: Int get() = 42
var readWrite: Int = 0
}
fun main() {
println(Box().readOnly)
val b = Box(); b.readWrite = 5; println(b.readWrite)
}Yaygın Hata: Özyineleme
Bir özelliğin kendi erişimcisinde özellik adını kullanmayın; bu, sonsuz özyinelemeye neden olur. Bunun yerine field kullanın.
class Wrong {
var x: Int = 0
set(value) {
// x = value // INFINITE RECURSION — calls setter again
field = value // CORRECT
}
}
fun main() {
val w = Wrong(); w.x = 42; println(w.x)
}Hızlı Kontrol
Özel bir setter içinde field tanımlayıcısı neyi ifade eder?
Özet
Özellik erişimine mantık eklemek için get() ve set() işlevlerini geçersiz kılın. Destek alanını okumak veya yazmak için erişimcilerin içinde field kullanın. Salt okunur herkese açık API'ler için setter'ları private olarak işaretleyin; değer her zaman türetiliyorsa hesaplanan özellikleri (destek alanı olmadan) kullanın.
Yapay zeka eğitmeniyle Kotlin öğren — ücretsiz
Tarayıcında gerçek kod yaz ve çalıştır, 7/24 yapay zeka eğitmeninden anında yardım al; web'de ya da uygulamada kaldığın yerden devam et.
- Kurslar
- 51
- Dersler
- 203
Sıkça Sorulan Sorular
“field ile Özel Get ve Set İşlevleri” dersi ücretsiz mi?
Evet — “field ile Özel Get ve Set İşlevleri” dersin tüm metni burada web'de ücretsiz olarak okunabilir. Etkileşimli olarak pratik yapmak (yerleşik kod editörü ve 7/24 yapay zeka koçu) ve Kotlin Academy kursunun geri kalanını açmak için CoddyKit PRO'ya yükselt. Kotlin Academy kursu toplamda 4 dersten oluşur.
“field ile Özel Get ve Set İşlevleri” dersinde ne öğreneceğim?
Destekleyen alan anahtar sözcüğünü kullanarak hesaplanan özellikler ve özel setter'lar yazın. Kotlin Academy ile uygulamalı kodu tarayıcıda doğrudan çalıştırarak pratik yaparsın ve 7/24 yapay zeka koçu dersi çalışırken sorularını yanıtlar.
Kotlin Academy öğrenmeye başlamak için deneyim gerekli mi?
Önceden deneyim gerekmez. CoddyKit'te Kotlin Academy, başlangıçtan ileri seviyeye kadar yapılandırıldığı için buradan başlayabilir veya başından başlayıp kendi hızında ilerleme yapabilirsin. Bu, 4 dersinin 3. dersidir.
“field ile Özel Get ve Set İşlevleri” dersi ne kadar sürer?
Çoğu CoddyKit dersi yaklaşık 5–10 dakika sürer. Her biri kısa ve etkileşimli olduğu için sabit ilerleme yaparsın ve web ile uygulama arasında tam olarak bıraktığın yerden devam edebilirsin.
Bu Kotlin Academy dersinde kod yazıp çalıştırabilir miyim?
Evet. Her Kotlin Academy dersi yerleşik bir kod editörü içerir, bu sayede tarayıcıda gerçek kod yazıp çalıştırabilir ve anlık yapay zeka geri bildirimi alırsın — yerel kurulum gerekli değildir.
Bu kursun tüm dersleri
- Birincil Yapıcı ve Özellik Parametreleri
- init Blokları ve Başlatma Sırası
- field ile Özel Get ve Set İşlevleri
- lateinit ve Tembel Başlatma