CodeBlanks Logo Icon CodeBlanks

vetoable

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

Main.kt
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

Main.kt
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

Soru
Delegates.____(0) { _, _, new -> new >= 0 }
Cevap
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

Orta seviye bölümündeki tüm dersler