Re[32]: Есть ли подобие LINQ на других языках/платформах?
От: Ikemefula Беларусь http://blogs.rsdn.org/ikemefula
Дата: 22.04.21 08:18
Оценка: +1
Здравствуйте, Serginio1, Вы писали:

I>>А теперь читай себя же:

I>>"Да но именно yield и создает IEnumerable ленивым."

I>>А теперь сравни с тем, что тебе пишу:

I>>"Ты в любой момент можешь отказаться от вызова MoveNext, а следовательно, IEnumerable сам по себе ленивый, безо всякого yield."

I>>Ты сам то видишь, как ты переобуваешься? Вот я и говорю — или ты ногой сообщения строчишь, или вот такой порядок у тебя в голове.

S> yield это конструкция создания класса обертки енумератора. Да yield создает енумератор.

Это ты уже переобулся. А днём ранее утверждал совсем другое "Да но именно yield и создает IEnumerable ленивым."
Эта фраза означает, ни много ни мало, что это благодаря yielf IEnumerable становится ленивым.


I>>Ты приводишь бенефит итератора, а не yield

I>>Ты что, сам не можешь понять чего пишешь?
S> Еще раз смотрим исходники и смотрим что практически все енумераторы создаются через yield!!!!!

Именно. Их используют ради бенефитов IEnumerable. FirstOrDefault() — такой фокус появился еще до появления yield.
Практически сразу, как некто начинает использовать итератор, приходится решать задачу "первый или дефолтный"
Такое писали ещё в 90х.
А теперь чудо — всё это стало возможным благодаря yield


I>>На счет мелочей — ты считаешь что yield/IEnumerable и есть общий случай. IQueryable для тебя, похоже, не существует.

I>>И это у тебя "yield делает IEnumerable ленивым"
S> Да да да!! Он создает иэнумератор через отдельный класс, а не через List или массив!!!

IEnumerable ленивый всегда, независимо от способа создания. Всегда, потому как ты в любой момент можешь отказаться от MoveNext.
Ты похоже сам не понимаешь своей фразы.

I>>Мои слова — yield имеет ценую — ты интерпретируешь, как "yield отстой". Ты адекватен?

S> Вот ты и не показал показал как программировать енумератор без yield.
S>Ручками создавать все тоже, что и делает компилятор обрабатывая yield

Ты снова подменяешь тему. Цену в рантайме ты подменяешь ценой в разработке. Похоже, если цена и там, и там, то для тебя это одно и то же.

I>>Правильно — ленивость это итератор. А вот yield это сахар, об чем я тебя пишу давным давно.

S> Но без этого сахара практически нахрен не нужен Linq. List тоже итератор, но его то нужно нелениво заполнить!

Вот еще одно заблуждение. С С++ и джавой ты не знаком?

I>>Ты путаешь рантайм с разработкой.

S> В чем!!

А чуть выше ты соскакиваешь с цены в рантайме на цену в разработке.
Например, когда я пишу, что IEnumerable имеет свою цену, ты начинаешь вещать про разработку.

I>>Похоже, раз я с чем то не согласен, значит я вобще ни с чем не согласен?

S> Да непонятно с чем ты не согласен!!

А ты пробуй читать внимательно.

S>Для тебя yield сахар ненужный и тормозящий. Нужно работать через List я так понимаю.


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

S>В нем можно обращаться по индексу, о чем ты так восхищался!

S>

S>yield сам по себе вносит потери. Неважно, есть лишние циклы, или нет. x[i] заменяется на доступ через итератор. Вот уже проблема.


Именно. Профайлер утверждает, что экономия может быть и полтора, и два, и даже десять раз.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.