Size: a a a

Kotlin Community

2020 November 23

DV

Dmitriy Volkovskiy in Kotlin Community
вкусовщина ) я ответил на вопрос, как можно сделать )
источник

AN

Alexander Nozik in Kotlin Community
The The
такую запись можно сократить лаконичней? в идеале чтобы не было двух упоминаний одной функции. в котлине столько этих идиом что я путаюсь в них
Добавить второе условие через && верхний иф
источник

AN

Alexander Nozik in Kotlin Community
Dmitriy Volkovskiy
вкусовщина ) я ответил на вопрос, как можно сделать )
Не вкусовщина, а потомки проклянут. Надо быть проще
источник

DV

Dmitriy Volkovskiy in Kotlin Community
ок, как лучше? как на скрине?
источник

T

The The in Kotlin Community
Dmitriy Volkovskiy
можно через takeIf: result.data?.data?.takeIf { resultCode == OK }?.run { put... }  ?: clear...
это красиво, но внутри run мне надо чтобы this указывал на result.data, а не на result.data.data
источник

AN

Alexander Nozik in Kotlin Community
Dmitriy Volkovskiy
ок, как лучше? как на скрине?
Нет, нормальным ифом без скоуп-функций вообще
источник

с#

саша сок #KotlinGang... in Kotlin Community
The The
вообще в идеале как-то проверять еще вторую data, но вряд ли это все можно сделать в одном run\let
зато можно написать

if(result.resultCode == Activity.RESULT_OK) {
   result.data ?: ...
   val data = parentData.data ?: ...
   // other stuff
}
источник

PE

Pavel Erokhin in Kotlin Community
Alexander Nozik
Нет, нормальным ифом без скоуп-функций вообще
+++
источник

T

The The in Kotlin Community
Alexander Nozik
Нет, нормальным ифом без скоуп-функций вообще
я уже написал что не хочу два раза указывать функцию clear
источник

AN

Alexander Nozik in Kotlin Community
Специально для секты свидетелей лума: https://github.com/tipsy/loomylin
источник

D

Denys in Kotlin Community
Dmitriy Volkovskiy
ок, как лучше? как на скрине?
if () {
 val a = result?.data?.data
 if (a != null) foo()
 else bar()
}
источник

DV

Dmitriy Volkovskiy in Kotlin Community
тогда вы забыли в конце еще раз
else bar()
источник

с#

саша сок #KotlinGang... in Kotlin Community
Denys
if () {
 val a = result?.data?.data
 if (a != null) foo()
 else bar()
}
если там else не возвращающий, то да. а так можно и

a ?: return bar()

a.foo()
источник

AN

Alexander Nozik in Kotlin Community
Dmitriy Volkovskiy
тогда вы забыли в конце еще раз
else bar()
Можно склеить два условия
источник

D

Denys in Kotlin Community
Dmitriy Volkovskiy
тогда вы забыли в конце еще раз
else bar()
Не суть, я о том, что в кодгольф играть в не стоит. Лучше писать так, чтобы было понятно читать. :)
источник

AN

Alexander Nozik in Kotlin Community
Но вообще товарищи, не злоупотребляйте скоуп-функциями. Они классные, но читаемость падает
источник

DV

Dmitriy Volkovskiy in Kotlin Community
Alexander Nozik
Можно склеить два условия
if (resultCode == OK && result?.data?.data != null) put(result.data) else clear()
?
источник

D

Denys in Kotlin Community
Alexander Nozik
Но вообще товарищи, не злоупотребляйте скоуп-функциями. Они классные, но читаемость падает
+++
источник

AN

Alexander Nozik in Kotlin Community
Dmitriy Volkovskiy
if (resultCode == OK && result?.data?.data != null) put(result.data) else clear()
?
Типа того. Единственная пробелма в том, что там смарт-каст не сработает. Но это тот случай, когда можно !! вставить
источник

с#

саша сок #KotlinGang... in Kotlin Community
The The
такую запись можно сократить лаконичней? в идеале чтобы не было двух упоминаний одной функции. в котлине столько этих идиом что я путаюсь в них
но в целом тут лучше без 'идиом' всяких, как и сказали, написать пару строчек кода. выглядеть будет замечательно.
источник