Size: a a a

Kotlin Community

2020 August 24

IO

Iaroslav Orlov in Kotlin Community
вот сейчас точно youtrack time
источник

с#

саша сок #KotlinGang... in Kotlin Community
саша сок #KotlinGang
ну там смарткаст
a?.let {
   a != null  // true
}
a?.let {
   a != null  // true
}
b?.let {
   b != null  // true
}
c?.let {
   c != null  // true
}
источник

VP

Vladimir Petrakovich in Kotlin Community
Где-то я такое уже видел, что он падал на больших выражениях
источник

с#

саша сок #KotlinGang... in Kotlin Community
а вот тут почему бы и нет, выглядит норм
источник

IO

Iaroslav Orlov in Kotlin Community
опа, нашел
источник

IO

Iaroslav Orlov in Kotlin Community
Vladimir Petrakovich
Где-то я такое уже видел, что он падал на больших выражениях
источник

VP

Vladimir Petrakovich in Kotlin Community
> don't write it out manually, that would be insane
Ловите наркомана!
источник

VP

Vladimir Petrakovich in Kotlin Community
Ну в issue, видимо, выражение куда больше)
источник

IO

Iaroslav Orlov in Kotlin Community
у меня всего 90 строчек!
источник

I

Igor in Kotlin Community
Iaroslav Orlov
из-за OOM
А сколько у тебя ограничение памяти?
источник

IO

Iaroslav Orlov in Kotlin Community
Igor
А сколько у тебя ограничение памяти?
1 GiB
источник

AN

Alexander Nozik in Kotlin Community
Vladimir Petrakovich
Ну в issue, видимо, выражение куда больше)
Там инлайнов много
источник

AM

Andrew Mikhaylov in Kotlin Community
саша сок #KotlinGang
a?.let {
   a != null  // true
}
b?.let {
   b != null  // true
}
c?.let {
   c != null  // true
}
Это если a / b не вар-свойства, где обычно и обмазываются летами чрезмерно.
источник

с#

саша сок #KotlinGang... in Kotlin Community
Alexander Nozik
Больше того скажу, промежуточные переменные в большинстве случаев лучше однострочников. Городить все в цепочку где надо и где не надо - это такая довольно стандартная ямка для упадутия котлин-новичков.
соглашусь, но это дело вложенности и понятности, опять же, если они все добавляют одну вложенность, то вполне можно так делать, имо.

Я до того как DSL сделал, делал реквесты так:

api.getUser(...) enqueue { user, e, t ->
   user?.let {

   }
   e?.let {

   }
   t?.let {

   }
}


есть минусы тут конечно, но делал это только для себя и в комментах enqueue были прописаны usage case-ы и что b = body, e = serverError, t = Throwable

В последствии переделал на такое (но предыдущее выглядело норм +-, я думаю):

api.getUsers(...) enqueue {
   success { user ->

   }
   error { serverError ->

   }
   throwable { throwable ->

   }
}
источник

AN

Anna Naumova in Kotlin Community
Alexander Nozik
Короче, лучше поговорите с тем, кто просил, и пусть объясняет, чего он (она) хочет. Использование let не является в общем случае признаком хорошего кода.
Поговорила :) Сказали, что во множественных случаях можно использовать другие варианты, например, check null. Но Гугл что-то без энтузиазма встретил такой запрос.

Я извиняюсь за очередное уточнение, но поисковик продолжает предлагать мне if-ы :) Можете, пожалуйста, ткнуть носом в пример, где было бы написано множественное условие вида if (a != null && b != null) без if, или с ним, но в каком-то "более котлиновском стиле"?😅
источник

с#

саша сок #KotlinGang... in Kotlin Community
Anna Naumova
Поговорила :) Сказали, что во множественных случаях можно использовать другие варианты, например, check null. Но Гугл что-то без энтузиазма встретил такой запрос.

Я извиняюсь за очередное уточнение, но поисковик продолжает предлагать мне if-ы :) Можете, пожалуйста, ткнуть носом в пример, где было бы написано множественное условие вида if (a != null && b != null) без if, или с ним, но в каком-то "более котлиновском стиле"?😅
ну тут null-safe просто

a?.let {
   // Body
}

боди вызовется только если a != null
источник

SB

Sergey Barmin in Kotlin Community
Anna Naumova
Поговорила :) Сказали, что во множественных случаях можно использовать другие варианты, например, check null. Но Гугл что-то без энтузиазма встретил такой запрос.

Я извиняюсь за очередное уточнение, но поисковик продолжает предлагать мне if-ы :) Можете, пожалуйста, ткнуть носом в пример, где было бы написано множественное условие вида if (a != null && b != null) без if, или с ним, но в каком-то "более котлиновском стиле"?😅
это вполне себе "котлиновый" стиль
источник

с#

саша сок #KotlinGang... in Kotlin Community
Sergey Barmin
это вполне себе "котлиновый" стиль
да
источник

SB

Sergey Barmin in Kotlin Community
нет нигде такой рекомендации "уберите все ифы  к чертям"
источник

SB

Sergey Barmin in Kotlin Community
есть лишь некоторые упрощения которые IDE подсказывает, например заменить if (a != null) {} на a?.let {}
источник