Size: a a a

Kotlin Community

2020 July 23

AN

Alexander Nozik in Kotlin Community
X
Ну ок, тогда напишу сам. Просто стдлиб такая удобная, что, подчас, там есть то, что я просто не заметил и написал заново
Ну да, но это уж больно специфично
источник

BP

Bogdan Panchenko in Kotlin Community
X
А в stdlib есть способ сделать вот такое в один заход:
firstList.forEach { doSomething(...) }
secondList.forEach { doSomething(...) }

Т.е. запустить одну и ту же функцию для двух разных списков?
Делать вот так я не хочу, чтобы не создавать лишний объект:
(firstList + secondList).forEach { doSomething(...) }

Понятно, что можно написать extention, но может это уже есть в stdlib и без оверхеда?
А типы одинаковые как я понял ? val f: (T) -> Unit = { doSomething() }

Но такое нужно когда функция не тривиальная, да и частенько можно спрятать за приватной
источник

X

X in Kotlin Community
Bogdan Panchenko
А типы одинаковые как я понял ? val f: (T) -> Unit = { doSomething() }

Но такое нужно когда функция не тривиальная, да и частенько можно спрятать за приватной
Там дело не в том, чтобы спрятать вызов функции, а чтобы два одинаковых кода не писать для двух листов. И да, типы одинаковые
источник

BP

Bogdan Panchenko in Kotlin Community
X
Там дело не в том, чтобы спрятать вызов функции, а чтобы два одинаковых кода не писать для двух листов. И да, типы одинаковые
Ну "одиноковый" зависит от размера, можно ещё так
for (l in sequenceOf(list1, list2)) l.forEach { println(it) }
источник

BP

Bogdan Panchenko in Kotlin Community
но лишние обектики
источник

KD

Konstantin Dovnar in Kotlin Community
inline fun <T> with(vararg things: T, action: (T) -> Unit) = things.forEach(action) ¯\_(ツ)_/¯

Но vararg, вроде, создаст массив под собой.
А в stdlib ничего такого нет, хотя мне казалось, что я где-то видел что-то вроде того, что выше написал.
источник

PE

Pavel Erokhin in Kotlin Community
Bogdan Panchenko
Ну "одиноковый" зависит от размера, можно ещё так
for (l in sequenceOf(list1, list2)) l.forEach { println(it) }
sequenceOf(list1, list2).flatten().forEach { println(it) }
источник

АО

Алексей Овсянников... in Kotlin Community
Vaycheslav Til
вот я пока тоже не просек зачем мне нужен КотлинЖС если он в принципе делает тоже самое что обычный ЖС )) но наверное не до конца еще погрузился в него
Типизация
when
Всякие let/also/etc.
источник

АО

Алексей Овсянников... in Kotlin Community
Это вот что в голову пришло сходу
источник

PE

Pavel Erokhin in Kotlin Community
Алексей Овсянников
Типизация
when
Всякие let/also/etc.
С ума схожу по let , also, apply, run, очень классные штуки
источник

BP

Bogdan Panchenko in Kotlin Community
Pavel Erokhin
sequenceOf(list1, list2).flatten().forEach { println(it) }
зачем тут flatten ? Ну конечно если Задача была вызвать функцию для каждого элемента - то да этот вариант топ
источник

АО

Алексей Овсянников... in Kotlin Community
Я тут еще во flow и KMPP ударился, так в итоге у меня на таргет платформе только обвесы типа бд/фронт
источник

АО

Алексей Овсянников... in Kotlin Community
Этого вообще много где не хватает, конечно
источник

X

X in Kotlin Community
я сделал вот так:
inline fun <T> T.applyToEach(another: T, block: T.(T) -> Unit) {
   block(this)
   block(another)
}
источник

X

X in Kotlin Community
по скорости тоже самое, как в исходном варианте. А вариант (list + list2).forEach   медленнее ровно в два раза, чем запускать forEarch отдельно для каждого. Опять же, эти 2x могут быть не принципиальны, когда счет в микросекундах. Я просто люблю делать эффективно сразу.
источник

X

X in Kotlin Community
Алексей Овсянников
Я тут еще во flow и KMPP ударился, так в итоге у меня на таргет платформе только обвесы типа бд/фронт
у меня обвесов много получается. Сервак с вебсокетами, SimpleDateFormat, работа с сертификатами (PKCS12), логгер, стактрейсы, файлы, hmacSha256,  сокеты, BigDecimal, время в ms и ns, язык. Короче, много чего выходит не кроссплатформенного.
источник

АО

Алексей Овсянников... in Kotlin Community
Ну для даты/времени всегда можно klock использовать, для sha256 в том же семействе что-то было
источник

АО

Алексей Овсянников... in Kotlin Community
Вебсокеты вроде как в кторе есть
источник

X

X in Kotlin Community
Алексей Овсянников
Вебсокеты вроде как в кторе есть
Мне нужно, чтобы они работали в виде сервера на андроиде в том числе. Когда последний раз смотрел, даже обычный сервер без вебсоветов был сломан. Сейчас, вроде бы, должен уже работать, а вот вебсокеты вряд ли появились
источник

AN

Alexander Nozik in Kotlin Community
X
Мне нужно, чтобы они работали в виде сервера на андроиде в том числе. Когда последний раз смотрел, даже обычный сервер без вебсоветов был сломан. Сейчас, вроде бы, должен уже работать, а вот вебсокеты вряд ли появились
В кторе есть и все работает. Про андроид не знаю.
источник