Size: a a a

Kotlin Community

2020 June 03

AN

Alexander Nozik in Kotlin Community
sequence{
 var list = ArrayList()
 for(item in list){
   if(predicate(item)){
     yield(list)
     list = ArrayList()
   } else {
      list.add(item)
   }
 }
}
источник

AN

Alexander Nozik in Kotlin Community
вся реализация
источник

a

alp in Kotlin Community
Alexander Nozik
вся реализация
спасибо. я нагородил побольше )
источник

AN

Alexander Nozik in Kotlin Community
Я из головы писал, надо проверить, что все правильно
источник

ᵛᵉⁿᵈᵉˡⁱᵉᵘ... in Kotlin Community
сейчас подумал, было бы прикольно иметь синтаксис проверки типа такого рода:
if(param is (String || Int))
источник

RP

Roman Prokopyev in Kotlin Community
alp
спасибо, собственно так и сделал, но хочется решения попроще и поменьше
если эт котлин то можно list.filter заюзать
источник

a

alp in Kotlin Community
Roman Prokopyev
если эт котлин то можно list.filter заюзать
филтер не подойдёт. нужно именно разбить на несколько списков, а не просто откинуть ненужные.
решение Александра прекрасно справляется с этим.
только после цикла нужен ещё один yield
источник

AA

Andrey Antipov in Kotlin Community
alp
всем привет
есть ли аналог String::split для списка?
или возможно какое-то красивое решение?
в конкретно моем случае достаточно просто разбивать по null
Не ленивая реализация для Iterable:
fun <T> Iterable<T>.split(vararg delimiters: T): List<List<T>> = delimiters.toSet().let { separators ->
   mutableListOf<MutableList<T>>(mutableListOf()).also {
       for (t in this) if (t in separators) it.add(mutableListOf()) else it.last().add(t)
   }
}
источник

VP

Vladimir Petrakovich in Kotlin Community
ᵛᵉⁿᵈᵉˡⁱᵉᵘ
сейчас подумал, было бы прикольно иметь синтаксис проверки типа такого рода:
if(param is (String || Int))
А что даёт такая проверка?
источник

ᵛᵉⁿᵈᵉˡⁱᵉᵘ... in Kotlin Community
Vladimir Petrakovich
А что даёт такая проверка?
if(param is String || param is Int)
источник

AA

Andrey Antipov in Kotlin Community
Vladimir Petrakovich
А что даёт такая проверка?
Видимо то же самое, что и if(param is String || param is Int)
источник

VP

Vladimir Petrakovich in Kotlin Community
ᵛᵉⁿᵈᵉˡⁱᵉᵘ
if(param is String || param is Int)
Так а что делать потом с этим param? Тип у него всё равно непонятно какой?
источник

ᵛᵉⁿᵈᵉˡⁱᵉᵘ... in Kotlin Community
Vladimir Petrakovich
Так а что делать потом с этим param? Тип у него всё равно непонятно какой?
ну суть там не в string || int, они для примера сказаны были
это применимо в тех случаях когда тебе нужно ограничить тип параметра определенными типами
источник

VP

Vladimir Petrakovich in Kotlin Community
ᵛᵉⁿᵈᵉˡⁱᵉᵘ
ну суть там не в string || int, они для примера сказаны были
это применимо в тех случаях когда тебе нужно ограничить тип параметра определенными типами
Ну то есть не в if, а в целом не хватает union типов?
источник

ᵛᵉⁿᵈᵉˡⁱᵉᵘ... in Kotlin Community
Vladimir Petrakovich
Ну то есть не в if, а в целом не хватает union типов?
да
источник

KZ

Konstantin Zolotov in Kotlin Community
ᵛᵉⁿᵈᵉˡⁱᵉᵘ
сейчас подумал, было бы прикольно иметь синтаксис проверки типа такого рода:
if(param is (String || Int))
Смарткаст сломается. param  все равно останется Any и типа что с ним дальше делать? Кажется, что это надо прям очень редко когда.
источник

ᵛᵉⁿᵈᵉˡⁱᵉᵘ... in Kotlin Community
Konstantin Zolotov
Смарткаст сломается. param  все равно останется Any и типа что с ним дальше делать? Кажется, что это надо прям очень редко когда.
наверное да, слишком редкий кейс, погорячился)
источник

VP

Vladimir Petrakovich in Kotlin Community
Это да, ну хотя бы есть sealed class
источник

LS

Lev Shagalov in Kotlin Community
Чтобы в kotlin common сделать потокобезопасный List надо городить корутину?
источник

BP

Bogdan Panchenko in Kotlin Community
Alexander Nozik
sequence{
 var list = ArrayList()
 for(item in list){
   if(predicate(item)){
     yield(list)
     list = ArrayList()
   } else {
      list.add(item)
   }
 }
}
Капец. Используете эту щель. Итератор должен брать один раз. На это Бреслав и ругался. Но вы ещё и молодеж учёте
источник