vetoable
- Kotlin kursu
- Orta seviye
- Ders 73/116
- 5 dk
vetoable ile veto edilebilir property öğrenirsin.
vetoable
vetoable bir özelliğe atamayı koşula bağlı reddetmeyi sağlar. Örnek: var age by Delegates.vetoable(0) { _, _, new -> new >= 0 }. Lambda true döndürürse atama kabul edilir, false döndürürse reddedilir ve değer değişmez.
Bu, değişmezleri (invariants) korumak için kullanışlıdır: yaş negatif olamaz, e-posta boş olamaz gibi. observable her atamayı kabul eder; vetoable ise doğrulama yapar. İkisi de Delegates nesnesinden alınır ve benzer lambda imzası kullanır.
vetoable çalışma biçimi
vetoable lambdası üç parametre alır: özellik referansı, eski değer ve yeni değer. Lambda Boolean döndürür. true ise yeni değer atanır, false ise eski değer korunur.
Örnek: var age by Delegates.vetoable(0) { _, _, new -> new >= 0 }. age = 25 kabul edilir (25 >= 0). age = -5 reddedilir (-5 < 0); age hala 25'tir. Bu, iş ilkesini tek satırda korumanın temiz yoludur. observable ile karşılaştırın: observable her zaman kabul eder, vetoable seçici davranır.
Uygulama vetoable ile yaş doğrula
import kotlin.properties.Delegates ekle. var age by Delegates.vetoable(0) { _, _, new -> new >= 0 } tanımla. main içinde age = 25 ata ve println(age) çağır. Sonra age = -5 ata ve tekrar println(age) çağır.
Başlangıç kodu
import kotlin.properties.Delegates
// age değişkenini vetoable delegesi ile tanımla: negatif değerleri reddet
fun main() {
// age'e 25 ata ve yazdır, sonra -5 ata ve yazdır
}Örnek çözüm
import kotlin.properties.Delegates
var age by Delegates.vetoable(0) { _, _, new -> new >= 0 }
fun main() {
age = 25
println(age)
age = -5
println(age)
}Beklenen çıktı
25 25
Soru ve cevaplar
Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.
1 vetoable ne yapar?
- Koşula göre reddedebilir Doğru cevap
- Asla değiştirmez
- Her zaman kabul eder
- Sadece okur
Açıklama: vetoable lambda false döndürürse atamayı reddeder.
2 vetoable bildirimini tamamla
Delegates.____(0) { _, _, new -> new >= 0 }
Delegates.vetoable(0) { _, _, new -> new >= 0 }
Açıklama: vetoable negatif değerleri reddeder.
3 vetoable kavramlarını eşle
| Kavram | Anlamı |
|---|---|
vetoable |
Reddedebilir |
observable |
İzler |
true |
Kabul |
false |
Red |