Hamza
11/02/2018, 4:59 AM@UseExperimental(ExperimentalContracts::class)
fun anyNotNull(vararg arguments: Any?, block: () -> Unit): Boolean {
contract {
returns(true) implies /* Something here that tells the compiler that all arguments are not null */
}
if(arguments.any { it == null }) {
block()
return false
}
return true
}
gildor
11/02/2018, 5:06 AMHamza
11/02/2018, 5:06 AMinline fun anyNotNull(vararg arguments: String?, block: () -> Unit) {
if(arguments.any { !isNotNull(it) }) {
block()
}
}
@UseExperimental(ExperimentalContracts::class)
fun isNotNull(arg: String?): Boolean {
contract {
returns(true) implies (arg != null)
}
return arg != null
}
gildor
11/02/2018, 5:18 AMHamza
11/02/2018, 5:18 AM