phldavies
04/29/2020, 6:11 PMdata class Person(val name: String?, val age: Int?)  is there any way to have inline val Person.isValid get() = name != null && age != null allow for smart-casting when accessing `name`/`age`?tseisel
04/29/2020, 7:17 PMcheckNotNull or requireNotNull stdlib functions)rax
04/29/2020, 7:26 PM@ExperimentalContracts
fun isValidPerson(name: String?, age: Int?): Boolean {
    contract {
        returns(true) implies (name != null)
        returns(true) implies (age != null)
    }
    return name != null && age != null
}
@OptIn(ExperimentalContracts::class)
fun test() {
    val p = Person("a", 10)
    if (isValidPerson(p.name, p.age)) {
        print(p.name.capitalize())
        print(p.age.toString())
    }
    
}rax
04/29/2020, 7:26 PMphldavies
04/30/2020, 11:25 AM