Validate a value before storing it in a property.

Custom Setter

CustomSetter.kt
class Rating {
    var value: Int = 0
        set(input) {
            field = if (input < 0) 0 else if (input > 5) 5 else input
        }
}

fun main() {
    val input = 
    val rating = Rating()
    rating.value = input
    val stored = rating.value

    println("input=$input")
    println("stored=$stored")
}
class Rating {
    var value: Int = 0
        set(input) {
            field = if (input < 0) 0 else if (input > 5) 5 else input
        }
}

fun main() {
    val input = 
    val rating = Rating()
    rating.value = input
    val stored = rating.value

    println("input=$input")
    println("stored=$stored")
}
class Rating {
    var value: Int = 0
        set(input) {
            field = if (input < 0) 0 else if (input > 5) 5 else input
        }
}

fun main() {
    val input = 
    val rating = Rating()
    rating.value = input
    val stored = rating.value

    println("input=$input")
    println("stored=$stored")
}
setter A custom setter can control what gets stored.