...
var b: String? = ...
fun test() {
// если a или b будут null нужно вызвать некий код и выйти из функции
a.call(b)
}
}
вот как красиво написать?
if(a == null || b == null) { } не красиво ?
так не работает)
if(a == null || b == null) { doSomething(); return}
и так не будет работать
в смысле не работает
a.call(b) не скомпилируется
https://play.kotlinlang.org/#eyJ2ZXJzaW9uIjoiMS40LjEwIiwicGxhdGZvcm0iOiJqYXZhIiwiYXJncyI6IiIsImpzQ29kZSI6IiIsIm5vbmVNYXJrZXJzIjp0cnVlLCJ0aGVtZSI6ImlkZWEiLCJjb2RlIjoiZnVuIGZvbyhhOiBJbnQ/LCBiOiBJbnQ/KSB7XG4gICAgaWYoYSA9PSBudWxsIHx8IGIgPT0gbnVsbCkge1xuICAgICAgICBwcmludGxuKFwiR290IG51bGwgdmFsdWVcIilcbiAgICAgICAgcmV0dXJuXG4gICAgfVxuICAgIHByaW50bG4oYSArIGIpXG59XG5cbmZ1biBtYWluKCkge1xuICAgIGZvbygxLCAyKVxuICAgIGZvbygzLCBudWxsKVxufSJ9 Справедливости ради, всё же работает.
Пример кода в студию.
a и b это локальные переменные класса
fun text() { val a = this.a ?: return val b = this.b ?: return // дальнейший код со смарткастами }
там же var-member'ы класса
вот пример
fun test() { a?.call(b ?: return) }
нужно перед выходом вызвать код
Вот это дрянь какая-то, не надо так.
объясните зачем вам var в мембере класса? есть множество случаев, когда можно обойтись без них
хорошо, локальные переменные, но в большинстве случаев проще это сделать параметрами приватной функции
обычный пример var a: Int? = 0 fun main() { thread { sleep(1000) a = null } thread { if(a != null) // здесь a может быть не равен нулл return ... println(a.toString()) // а тут неизвестно } }
Обсуждают сегодня