Есть ли готовый метод который заменяет Select().Where() но делает это более оптимально не создавая объект каждый раз ?
Что-то в стиле
Observable.Range(10).MaybeSelect(x => x + 1, x => x % 2)
// 1 3 5 7 9
Здравствуйте, _NN_, Вы писали:
_NN>Есть ли готовый метод который заменяет Select().Where() но делает это более оптимально не создавая объект каждый раз ?
Эмм, а где Where в rx создаёт объект каждый раз?
https://github.com/Reactive-Extensions/Rx.NET/blob/859e6159cb07be67fd36b18c2ae2b9a62979cb6d/Rx.NET/Source/System.Reactive.Linq/Reactive/Linq/Observable/Where.cs
, если ещё не
Здравствуйте, Sinix, Вы писали:
S>Здравствуйте, _NN_, Вы писали:
_NN>>Есть ли готовый метод который заменяет Select().Where() но делает это более оптимально не создавая объект каждый раз ?
S>Эмм, а где Where в rx создаёт объект каждый раз?
Select всегда создает.
Код примерно такой:
ob.Select(x => x != "A" ? x : null).Where(x => x != null)
Здравствуйте, _NN_, Вы писали:
_NN>Код примерно такой:
ob.Select(x => x != "A" ? x : null).Where(x => x != null)
Если нельзя
ob.Where(x => x != "A").Select(x => SomethingFrom(x))
то свой написать.
Здравствуйте, Sinix, Вы писали:
S>Здравствуйте, _NN_, Вы писали:
_NN>>Код примерно такой:
S>S>ob.Select(x => x != "A" ? x : null).Where(x => x != null)
S>
S>Если нельзя
S>S>ob.Where(x => x != "A").Select(x => SomethingFrom(x))
S>
В том и дело, что нужно сначала преобразовать, а потом решить передавать дальше или нет.
Ну и заодно сэкономить на лишнем вызове конечно
S>то свой написать.
Можно объединить Where.cs с Select.cs и создать метод расширения SelectWhere().
Ну вот закрадываются сомнения , а не создаю ли я что-то уже готовое ?
Кстати, почему в самом Rx/Ix такого нет ?
Здравствуйте, _NN_, Вы писали:
_NN>Кстати, почему в самом Rx/Ix такого нет ?
Как всегда — никому оно особо не нужно. Стандартный подход — хелперы
типа таких.
Ну и если вам приходится экономить даже на вызове пары методов, то Rx точно не лучший вариант, под высокую производительность он не заточен.
Здравствуйте, Sinix, Вы писали:
S>Ну и если вам приходится экономить даже на вызове пары методов, то Rx точно не лучший вариант, под высокую производительность он не заточен.
Ну не то что приходится, просто семантически как-то выглядит странновато , передаём объект и его же фильтруем , когда можно это сделать в один вызов.
В общем сделаю на досуге, попробую пулл реквест продвинуть
Здравствуйте, _NN_, Вы писали:
_NN>Ну не то что приходится, просто семантически как-то выглядит странновато , передаём объект и его же фильтруем , когда можно это сделать в один вызов.
_NN>В общем сделаю на досуге, попробую пулл реквест продвинуть
Сначала обсуди — они там не очень дружелюбны
Before submitting a feature or substantial code contribution please discuss it with the team and ensure it follows the product roadmap. Note that all code submissions will be rigorously reviewed and tested by the Rx Team, and only those that meet an extremely high bar for both quality and design/roadmap appropriateness will be merged into the source.
Оно и понятно, с учётом того, что rx портируется под .net, яву, плюсы, js и емнип ruby с питоном.