169 похожих чатов

Всем привет. Подскажите как сделать зависимость нулябельности выходного параметра от

входного внутри Flow:
fun <T> Flow<List<T>?>.filterListElements(predicate: (T) -> Boolean): Flow<List<T>?> =
map { list -> list?.filter(predicate) }

12 ответов

13 просмотров

Не совсем понял, какую именно зависимость вы хотите выразить

Aleksandr- Автор вопроса
Andrey Antipov
Не совсем понял, какую именно зависимость вы хотит...

Я хочу если на входе Flow с ненулябельнным листом Flow<List<T>>, то и на выходе Flow<List<T>>, а если на входе Flow<List<T>?>, то и на выходе Flow<List<T>?>

fun <T, B : List<T>?> Flow<B>.filterListElements(predicate: (T) -> Boolean): Flow<B> = map { list -> list?.filter(predicate) }

Aleksandr- Автор вопроса
Aλex Sokol
fun <T, B : List<T>?> Flow<B>.filterListElements(p...

Пробовал, он ругается Type mismatch. Required: Flow<B> Found: Flow<List<T>?>

Aleksandr
Пробовал, он ругается Type mismatch. Required: Flo...

ну да, потому что map только лист возвращает, хм, тогда даже не знаю

Aleksandr- Автор вопроса
Aleksandr
Я хочу если на входе Flow с ненулябельнным листом ...

Проще, чем в примере ниже, врядли у вас получится (в примере Sequence, а не Flow, но это не критично для идеи). fun <T> Sequence<List<T>>.filterListElements(predicate: (T) -> Boolean): Sequence<List<T>> = map { it.filter(predicate) } @JvmName("filterListElementsNullable") fun <T> Sequence<List<T>?>.filterListElements(predicate: (T) -> Boolean): Sequence<List<T>?> = map { it?.filter(predicate) } fun main() { val filterListElements = sequenceOf(listOf(1), listOf(2)).filterListElements { it < 3 } val filterListElementsNullable = sequenceOf(listOf(1), listOf(2), null).filterListElements { it < 3 } println(filterListElements.toList()) println(filterListElementsNullable.toList()) }

Aleksandr
Спасибо.

Можно ещё так, но с анчекд кастами: @Suppress("UNCHECKED_CAST") fun <T, L : List<T>?> Sequence<L>.filterListElements(predicate: (T) -> Boolean): Sequence<L> = map { (it as? List<T>)?.filter(predicate) } as Sequence<L>

Aleksandr- Автор вопроса
Andrey Antipov
Можно ещё так, но с анчекд кастами: @Suppress("UNC...

Можно упростить до: @Suppress("UNCHECKED_CAST") fun <T, L : List<T>?> Sequence<L>.filterListElements(predicate: (T) -> Boolean): Sequence<L> = map { it?.filter(predicate) } as Sequence<L>

Aleksandr
Можно упростить до: @Suppress("UNCHECKED_CAST") fu...

Компилятор ругается Kotlin: Type inference failed: inline fun <T> Iterable<T#1 (type parameter of kotlin.collections.filter)>.filter(predicate: (T#1) -> Boolean): List<T#1> cannot be applied to receiver: L arguments: ((T#2 (type parameter of filterListElements)) -> Boolean)

Aleksandr- Автор вопроса
Andrey Antipov
Компилятор ругается Kotlin: Type inference failed:...

Странно, у меня работает: https://pl.kotl.in/QvAjjQXiS

Похожие вопросы

Обсуждают сегодня

Добрый вечер. Есть вопрос, а может и предложение. Был у меня диалог в другой группе о делфи и я задался вопросом: "А нельзя ли в делфи цвет //коментария и {комментария} сде...
Kraszx
24
Всем привет! Подскажи, пожалуйста, как передать в TComboBox сразу значение и id записи. На Delphi я делал так: ComboBox1.Items.AddObject('Какое-то значение', Pointer(id запис...
Евгений
13
Мдя, прикол, боевая сборка запускается (именно под отладчиком) после F9 примерно полторы минуты (97 секунд если быть точным). Начал копать - проблема детектится сразу - зависа...
Александр (Rouse_) Багель
38
Здравствуйте, вопрос по структурам данных. Были у вас случаи, когда пришлось писать деревья или двунаправленные списки?
/ /
50
Товарищи, кто работа с iphelper? Или может я в самой логике ошибки фигачу, не пойму.... var ifTable : PMIB_IFTABLE; size, corSize: DWORD; Buffer ...
Warfarellen
4
я так понимаю, я так подозреваю, что создание такого плагина для человека, кто умеет писать плагины для делфи потребует минут 5-10 времени. но это мое подозрение. хотелось бы ...
Kraszx
7
Коллеги, добрый вечер. Создаю коллекцию от TFPGMap, ключ - перечисление, значение - целое. Нужно отсортировать коллекцию по значению. Как это можно сделать?
Kirill Filippenok
11
Скажи а ты когда этот канал создавал ты уже дельфи не любил, или это со временем пришло?
Роман Лях (rgreat)
18
Привет, такой вопросик появился кажется ли вам что Rust слишком сложный/строгий для высокоуровневого программирования и слишком "безопасный"/строгий для низкоуровневого?
Крокант
10
Всем привет! Использую кастомное модальное диалоговое окошко, все по классике - mrOK, mrCancel как ModalResult. Однако есть нюанс - в главной форме есть универсальный обработч...
Олег Гранишевский
20
Карта сайта