Re[8]: Семантика и выразительность языка
От: Jack128  
Дата: 06.05.19 09:50
Оценка:
Здравствуйте, Ночной Смотрящий, Вы писали:

НС>Здравствуйте, varenikAA, Вы писали:


AA>>Почему переусложнил? Есть последовательность элементов, нужно выполнить над определенными элементами

AA>>какое-то действие, при этом еще нужно знать позицию в исходной коллекции.

НС>Для этого есть Select с индексом.


Ну в исходном сообщении использовался Select c индексом. Получился бред.

вообще надо было так писать:

            foreach (var (item, index) in Enumerable.Range(1, 10).WithIndex())
            {
                if (item % 2 == 0)
                    Console.WriteLine($"{index} = {item}");
            }

        public static IEnumerable<(T Item, int Index)> WithIndex<T>(this IEnumerable<T> items)
        {
            var index = 0;
            foreach (var item in items)
            {
                yield return (item, index++);
            }
        }
Re[9]: Семантика и выразительность языка
От: Ночной Смотрящий Россия  
Дата: 06.05.19 09:53
Оценка:
Здравствуйте, Jack128, Вы писали:

J>вообще надо было так писать:


Верно
... << RSDN@Home 1.3.17 alpha 5 rev. 62>>
Re[10]: Семантика и выразительность языка
От: Jack128  
Дата: 06.05.19 10:17
Оценка:
Здравствуйте, Ночной Смотрящий, Вы писали:

НС>Здравствуйте, Jack128, Вы писали:


J>>вообще надо было так писать:


НС>Верно


Угу, только там деконструктора нет для IndexedItem'а. Я extension метод для него у себя написал.
Re[11]: Семантика и выразительность языка
От: Ночной Смотрящий Россия  
Дата: 06.05.19 11:31
Оценка:
Здравствуйте, Jack128, Вы писали:

J>Угу, только там деконструктора нет для IndexedItem'а.


Ну так PR никто не отменял. Заодно еще можно докинуть implicit conversion к тупле.
... << RSDN@Home 1.3.17 alpha 5 rev. 62>>
Re[9]: Семантика и выразительность языка
От: sergeya Ниоткуда http://blogtani.ru
Дата: 06.05.19 22:09
Оценка:
Здравствуйте, Jack128, Вы писали:

J>вообще надо было так писать:


J>
J>            foreach (var (item, index) in Enumerable.Range(1, 10).WithIndex())
J>            {
J>                if (item % 2 == 0)
J>                    Console.WriteLine($"{index} = {item}");
J>            }
J>


или так:
Enumerable.Range(1, 10)
    .Select((v, i) => new { i, v })
    .Where(e => e.v % 2 == 0)
    .ToList() // Приходится использовать явную материализацию, иначе все эти вызовы не будут выполнены
    .ForEach(e => Console.WriteLine($"{e.i} = {e.v}"));
Мобильная версия сайта RSDN — http://rsdn.org/forum/rsdn/6938747
Автор: sergeya
Дата: 19.10.17
Re[8]: Семантика и выразительность языка
От: varenikAA  
Дата: 08.05.19 03:33
Оценка:
Здравствуйте, Ночной Смотрящий, Вы писали:

НС>Зато в Немерле потребовалась куча наворотов для нормальной поддержки LINQ.


Вот это не понял, какие навороты?

Достаточно
using System.Linq;


        foreach((e,id)  when e % 2 == 0 in [1, 2, 4, 5, 7].Select((e,i) => (e,i)))
            WriteLine($"$id = $e");

        _  = ReadLine();


Линк прекрасно работает в Немерле.
☭ ✊ В мире нет ничего, кроме движущейся материи.
Re[9]: Семантика и выразительность языка
От: Ночной Смотрящий Россия  
Дата: 08.05.19 07:18
Оценка:
Здравствуйте, varenikAA, Вы писали:

AA>Вот это не понял, какие навороты?


А ты почитай форум Немерле времен появления linq.

AA>Линк прекрасно работает в Немерле.


Ага, после долгого допиливания компилятора.
... << RSDN@Home 1.3.17 alpha 5 rev. 62>>
Re[10]: Семантика и выразительность языка
От: AlexRK  
Дата: 08.05.19 08:40
Оценка:
Здравствуйте, sergeya, Вы писали:

S>или так:

S>
S>Enumerable.Range(1, 10)
S>    .Select((v, i) => new { i, v })
S>    .Where(e => e.v % 2 == 0)
S>    .ToList() // Приходится использовать явную материализацию, иначе все эти вызовы не будут выполнены
S>    .ForEach(e => Console.WriteLine($"{e.i} = {e.v}"));
S>


Или так:
Enumerable.Range(1, 10)
    .Select((v, i) => new { i, v })
    .Where(e => e.v % 2 == 0)
    .Count(e => { Console.WriteLine($"{e.i} = {e.v}"); return true; });


Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.