Spec-Zone.ru › Kotlin 1.4

vetoable

kotlin-stdlib / kotlin.properties / Delegates / vetoable
Требования к платформе и версии: JVM (1.0), JS (1.0), Native (1.0)
inline fun <T> vetoable(
    initialValue: T, 
    crossinline onChange: (property: KProperty<*>, oldValue: T, newValue: T) -> Boolean
): ReadWriteProperty<Any?, T>

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

import kotlin.properties.Delegates

import kotlin.test.*

fun main(args: Array<String>) {
//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(args: Array<String>) {
//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
}

Параметры

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

onChange - обратный вызов, который вызывается перед попыткой изменения значения свойства. Значение свойства еще не изменено, когда вызывается этот обратный вызов. Если обратный вызов возвращает true, значение свойства устанавливается в новое значение, а если обратный вызов возвращает false, новое значение отбрасывается, и свойство сохраняет свое старое значение.

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

Spec-Zone.ru

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