Size: a a a

Kotlin Community

2020 August 24

SB

Sergey Barmin in Kotlin Community
если совсем упороться то можно и написать a?.takeIf { b != null }?.let {} но это ужасно
источник

с#

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

с#

саша сок #KotlinGang... in Kotlin Community
Sergey Barmin
если совсем упороться то можно и написать a?.takeIf { b != null }?.let {} но это ужасно
согласен
источник

DH

Dmitry Hvastunov in Kotlin Community
А чем собственно when не устраивает?
источник

AN

Alexander Nozik in Kotlin Community
Dmitry Hvastunov
А чем собственно when не устраивает?
Там не when, а именно if с пересечением условий
источник

с#

саша сок #KotlinGang... in Kotlin Community
Dmitry Hvastunov
А чем собственно when не устраивает?
мм, when при двух чеках на нон нулл, тип так:

when {
   a == null -> Unit
   b == null -> Unit
   else ->
}
источник

BP

Bogdan Panchenko in Kotlin Community
Dmitry Hvastunov
А чем собственно when не устраивает?
выполнятеся только одно условия, плохо работаю смаркасты порой, хотя в ифе аналогично плохо работаю смаркасты
источник

с#

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

DH

Dmitry Hvastunov in Kotlin Community
a?.takeIf {
           it < 5 && b > 0
   }?.apply {
       println("yyyyyyy")
   } ну вот так конечно работает. Но подход странный. Мне кажется иф будет лучше.
источник

AE

Alexandr Emelyanov in Kotlin Community
Dmitry Hvastunov
a?.takeIf {
           it < 5 && b > 0
   }?.apply {
       println("yyyyyyy")
   } ну вот так конечно работает. Но подход странный. Мне кажется иф будет лучше.
Бред полнейший. Читаемость ноль, использовать замыкание разом использовать замыкание, не понимаю стремления записи в одну строку, когда код по факту получения монструознее
источник

с#

саша сок #KotlinGang... in Kotlin Community
Dmitry Hvastunov
a?.takeIf {
           it < 5 && b > 0
   }?.apply {
       println("yyyyyyy")
   } ну вот так конечно работает. Но подход странный. Мне кажется иф будет лучше.
конечно if лучше, если уж приспичило нуллабл так проверять, то я бы написал

if(it < 5 && b > 0) a?.let {
   println("yyyyyyyy")
}
источник

EF

Evgen Fil // 🎲 in Kotlin Community
Alexander Nozik
Больше того скажу, промежуточные переменные в большинстве случаев лучше однострочников. Городить все в цепочку где надо и где не надо - это такая довольно стандартная ямка для упадутия котлин-новичков.
Но если оно читается и выглядит красиво, то почему и нет?)
источник

AN

Alexander Nozik in Kotlin Community
Evgen Fil // 🎲
Но если оно читается и выглядит красиво, то почему и нет?)
Что читается?
источник

EF

Evgen Fil // 🎲 in Kotlin Community
Alexander Nozik
Что читается?
Однострочное выражение
источник

AN

Alexander Nozik in Kotlin Community
Evgen Fil // 🎲
Однострочное выражение
Пример пожалуйста
источник

AN

Alexander Nozik in Kotlin Community
Речь была исключительно о комбинациях нескольких let/run/apply блоков
источник

EF

Evgen Fil // 🎲 in Kotlin Community
Alexander Nozik
Речь была исключительно о комбинациях нескольких let/run/apply блоков
А я в целом 🤷‍♀️

fun check(msg: Message, command: String) = msg.text?.startsWith("!$command") ?: false
источник

AN

Alexander Nozik in Kotlin Community
Evgen Fil // 🎲
А я в целом 🤷‍♀️

fun check(msg: Message, command: String) = msg.text?.startsWith("!$command") ?: false
Ну так это нормально. Тут ни одного let
источник

EF

Evgen Fil // 🎲 in Kotlin Community
А какие вообще реальные кейсы могут быть у этого let?
источник

с#

саша сок #KotlinGang... in Kotlin Community
Alexander Nozik
Ну так это нормально. Тут ни одного let
ну так условный код

val name: String? = ""

name?.let {
   println("Name $name")
} ?: println("Name invalid")


чем плох ?
источник