[Rx] MaybeSelect
От: _NN_ www.nemerleweb.com
Дата: 17.11.15 07:51
Оценка:
Есть ли готовый метод который заменяет Select().Where() но делает это более оптимально не создавая объект каждый раз ?
Что-то в стиле

Observable.Range(10).MaybeSelect(x => x + 1, x => x % 2)
// 1 3 5 7 9
http://rsdn.nemerleweb.com
http://nemerleweb.com
Re: [Rx] MaybeSelect
От: Sinix  
Дата: 17.11.15 08:15
Оценка:
Здравствуйте, _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
, если ещё не
Re[2]: [Rx] MaybeSelect
От: _NN_ www.nemerleweb.com
Дата: 17.11.15 08:51
Оценка:
Здравствуйте, Sinix, Вы писали:

S>Здравствуйте, _NN_, Вы писали:


_NN>>Есть ли готовый метод который заменяет Select().Where() но делает это более оптимально не создавая объект каждый раз ?


S>Эмм, а где Where в rx создаёт объект каждый раз?

Select всегда создает.

Код примерно такой:

ob.Select(x => x != "A" ? x : null).Where(x => x != null)
http://rsdn.nemerleweb.com
http://nemerleweb.com
Re[3]: [Rx] MaybeSelect
От: Sinix  
Дата: 17.11.15 09:12
Оценка:
Здравствуйте, _NN_, Вы писали:

_NN>Код примерно такой:

ob.Select(x => x != "A" ? x : null).Where(x => x != null)


Если нельзя
ob.Where(x => x != "A").Select(x => SomethingFrom(x))


то свой написать.
Re[4]: [Rx] MaybeSelect
От: _NN_ www.nemerleweb.com
Дата: 17.11.15 09:16
Оценка:
Здравствуйте, 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 такого нет ?
http://rsdn.nemerleweb.com
http://nemerleweb.com
Re[5]: [Rx] MaybeSelect
От: Sinix  
Дата: 17.11.15 09:32
Оценка:
Здравствуйте, _NN_, Вы писали:

_NN>Кстати, почему в самом Rx/Ix такого нет ?

Как всегда — никому оно особо не нужно. Стандартный подход — хелперы типа таких.

Ну и если вам приходится экономить даже на вызове пары методов, то Rx точно не лучший вариант, под высокую производительность он не заточен.
Re[6]: [Rx] MaybeSelect
От: _NN_ www.nemerleweb.com
Дата: 17.11.15 09:57
Оценка: 38 (1)
Здравствуйте, Sinix, Вы писали:

S>Ну и если вам приходится экономить даже на вызове пары методов, то Rx точно не лучший вариант, под высокую производительность он не заточен.


Ну не то что приходится, просто семантически как-то выглядит странновато , передаём объект и его же фильтруем , когда можно это сделать в один вызов.
В общем сделаю на досуге, попробую пулл реквест продвинуть
http://rsdn.nemerleweb.com
http://nemerleweb.com
Re[7]: [Rx] MaybeSelect
От: Sinix  
Дата: 17.11.15 10:08
Оценка:
Здравствуйте, _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 с питоном.
Re[8]: [Rx] MaybeSelect
От: _NN_ www.nemerleweb.com
Дата: 17.11.15 18:47
Оценка:
Здравствуйте, Sinix, Вы писали:
S>Оно и понятно, с учётом того, что rx портируется под .net, яву, плюсы, js и емнип ruby с питоном.

В общем, на данный момент Select + Where в коде получается в любом случае и дополнительные методы не нужны.
http://rsdn.nemerleweb.com
http://nemerleweb.com
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.