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