Spec-Zone.ru › Kotlin 2

vetoable

kotlin-stdlib/kotlin.properties/Delegates/vetoable

Начиная с Kotlin: 1.0

inline fun <T> vetoable(initialValue: T, crossinline onChange: (property: KProperty<*>, oldValue: T, newValue: T) -> Boolean): ReadWriteProperty<Any?, T>

Возвращает делегат свойства для свойства, доступного для чтения и записи, который при изменении вызывает указанную функцию обратного вызова, позволяя ей отменить изменение.

Параметры

initialValue

начальное значение свойства.

onChange

функция обратного вызова, которая вызывается перед попыткой изменить значение свойства. На момент вызова этой функции значение свойства ещё не изменено. Если функция обратного вызова возвращает true, свойству присваивается новое значение, а если функция возвращает false, новое значение отбрасывается, и свойство сохраняет прежнее значение.

Примеры

import kotlin.properties.Delegates
import kotlin.test.*

fun main() { 
   //sampleStart 
   var max: Int by Delegates.vetoable(0) { property, oldValue, newValue ->
    newValue > oldValue
}

println(max) // 0

max = 10
println(max) // 10

max = 5
println(max) // 10 
   //sampleEnd
}
import kotlin.properties.Delegates
import kotlin.test.*

fun main() { 
   //sampleStart 
   var max: Int by Delegates.vetoable(0) { property, oldValue, newValue ->
    if (newValue > oldValue) true else throw IllegalArgumentException("New value must be larger than old value.")
}

println(max) // 0

max = 10
println(max) // 10

// max = 5 // will fail with IllegalArgumentException 
   //sampleEnd
}

© 2010–2026 JetBrains s.r.o. and Kotlin Programming Language contributors
Licensed under the Apache License, Version 2.0.
https://kotlinlang.org/api/core/kotlin-stdlib/kotlin.properties/-delegates/vetoable.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API