Информация об изменениях

Сообщение Re[20]: Есть ли подобие LINQ на других языках/платформах? от 19.04.2021 14:18

Изменено 19.04.2021 14:21 Pauel

Re[20]: Есть ли подобие LINQ на других языках/платформах?
Здравствуйте, Serginio1, Вы писали:

I>>И что? Сколько стоит использование IEnumerable ?

S> То же что и yield, а именно MoveNext и Current

Именно.

S> Я подправил потому, что изначальный смыл в том, что вычисления идут с права налево и нет лишних циклов если бы вычисляли слева направо c созданием новых коллекций


Ты путаешь linq и ленивую обработку коллекций. Linq это про соответствующие расширения, которые можно навесить на любой интерфейс, а не только IEnumerable.

Т.е. yield это частный случай для IEnumerable. То есть, частный случай частного случая

S> Где ты нашел про то, что yield ничего не стоит?


Ты так пишешь.

I>>Не к энумератору, а к значению. Вместо x[i] у тебя будет обращение к moveNext, switch присваивание Current, чтение Current.

S> Ну я тебе подам на вход IEnumerable не основанном на List или array, как ты с ним будешь работать.
S>Это же Linq!!!

Не подашь. У меня параметры это массивы в явном виде шоб люди навроде тебя не подпихивали хрень и не заявляли "Ваша обработка коллекций тормозит после того, как я сто фильтров объединил"

S> главное, что yield обеспечивает вычисление справа на лево!!!


yield это просто последовательность, а не "слева направо". А вот как будут реальные элементы данных выбираться — как угодно.

S>то тебе не нужно перебирать всю коллекцию (возможно и не один раз) и вызвать все лямбды, new в цепочке расширений если вычисления идут слева направо.


Это тот самый частный случай.
Re[20]: Есть ли подобие LINQ на других языках/платформах?
Здравствуйте, Serginio1, Вы писали:

I>>И что? Сколько стоит использование IEnumerable ?

S> То же что и yield, а именно MoveNext и Current

Именно.

S> Я подправил потому, что изначальный смыл в том, что вычисления идут с права налево и нет лишних циклов если бы вычисляли слева направо c созданием новых коллекций


Ты путаешь linq и ленивую обработку коллекций. Linq это про соответствующие расширения, которые можно навесить на любой интерфейс, а не только IEnumerable. Более того — совсем необязательно это будет коллекция.
RX, XML, WMI, IQueryable и тд и тд и тд.

Т.е. yield это частный случай для IEnumerable. То есть, частный случай частного случая

S> Где ты нашел про то, что yield ничего не стоит?


Ты так пишешь.

I>>Не к энумератору, а к значению. Вместо x[i] у тебя будет обращение к moveNext, switch присваивание Current, чтение Current.

S> Ну я тебе подам на вход IEnumerable не основанном на List или array, как ты с ним будешь работать.
S>Это же Linq!!!

Не подашь. У меня параметры это массивы в явном виде шоб люди навроде тебя не подпихивали хрень и не заявляли "Ваша обработка коллекций тормозит после того, как я сто фильтров объединил"

S> главное, что yield обеспечивает вычисление справа на лево!!!


yield это просто последовательность, а не "слева направо". А вот как будут реальные элементы данных выбираться — как угодно.

S>то тебе не нужно перебирать всю коллекцию (возможно и не один раз) и вызвать все лямбды, new в цепочке расширений если вычисления идут слева направо.


Это тот самый частный случай.