Здравствуйте, barn_czn, Вы писали:
_>>>Конечно, приведение к IEnumerable типа который имелементирует IEnumerable<> работать будет, куда оно денется. Попробуйте на чистом _>>>IEnumerable, не генерик. Я точно знаю что LINQ не умеет работать с негенерик IEnumerable. А foreach работает.
L>>
L>>var lst = new ArrayList { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };
L>>foreach (object i in lst.Cast<object>().Skip(5).Take(5))
L>> Console.WriteLine(i);
L>>
_> _>Cast это сила. _>Вы понимаете что речь идет не о мощи LINQ ?
А о чем? Cast, Skip, Take — все это часть того, что называют Linq.
Здравствуйте, LF, Вы писали:
_>>Ну тогда по вашей логике можно остановится. .NET 4 впринципе не нужен был уже. Да и 3.0 и 3.5 тоже, зачем вообще по вашему синтаксический сахар делают ? LF>Сахар сахару рознь.
Понимаете, возможность обратится внутри foreach к номеру перечисляемого объекта — это не просто синтакс. сахар. Это почти подсказка нерадивым программерам о том что все множества имеют много общего с множествами натуральных чисел. В частности это обображение любой коллекции на множество натуральных чисел.
Никто пока не задал вопрос о том — какой тип данных будет иметь эта проертя Index ?
Вот это действительно ставит в тупик. Но говорят что в D просто объявляют нужного типа переменную. Но тогда действительно фича примет уже не тот фундаментальный смысл.
Здравствуйте, barn_czn, Вы писали:
LF>>Сахар сахару рознь.
_>Понимаете, возможность обратится внутри foreach к номеру перечисляемого объекта — это не просто синтакс. сахар. Это почти подсказка нерадивым программерам о том что все множества имеют много общего с множествами натуральных чисел. В частности это обображение любой коллекции на множество натуральных чисел.
Здравствуйте, barn_czn, Вы писали:
_>Здравствуйте, LF, Вы писали:
_>>>Ну тогда по вашей логике можно остановится. .NET 4 впринципе не нужен был уже. Да и 3.0 и 3.5 тоже, зачем вообще по вашему синтаксический сахар делают ? LF>>Сахар сахару рознь.
_>Понимаете, возможность обратится внутри foreach к номеру перечисляемого объекта — это не просто синтакс. сахар. Это почти подсказка нерадивым программерам о том что все множества имеют много общего с множествами натуральных чисел. В частности это обображение любой коллекции на множество натуральных чисел.
Для отображения есть специальные методы. Отобрази, потом перебирай.
_>Никто пока не задал вопрос о том — какой тип данных будет иметь эта проертя Index ? Вот это действительно ставит в тупик. Но говорят что в D просто объявляют нужного типа переменную. Но тогда действительно фича примет уже не тот фундаментальный смысл.
_>Понимаете, возможность обратится внутри foreach к номеру перечисляемого объекта — это не просто синтакс. сахар. Это почти подсказка нерадивым программерам о том что все множества имеют много общего с множествами натуральных чисел. В частности это обображение любой коллекции на множество натуральных чисел.
Отображение на множество не имеет ничего общего с перебором. Мухи отдельно, котлеты отдельно.
Здравствуйте, LF, Вы писали:
_>>Понимаете, возможность обратится внутри foreach к номеру перечисляемого объекта — это не просто синтакс. сахар. Это почти подсказка нерадивым программерам о том что все множества имеют много общего с множествами натуральных чисел. В частности это обображение любой коллекции на множество натуральных чисел. LF>Отображение на множество не имеет ничего общего с перебором. Мухи отдельно, котлеты отдельно.
Неправда. Порядок перебора как раз и определяется тем как вы отобразили ваше множество на множество натуральных чисел. Можно конечно считать и наоборот что отображение зависит от перебора. Но мы то обсуждаем случай когда необходимо перебрать и в процессе перебора использовать индекс. Я же сразу привел проблему а потом решение которое мне нравилось бы.
Решения с помощью LINQ я сразу отмел, потому что это отдельная технология, это не фича языка (без добавления сборок LINQа нет).
Здравствуйте, barn_czn, Вы писали:
_>Здравствуйте, LF, Вы писали:
_>>>Понимаете, возможность обратится внутри foreach к номеру перечисляемого объекта — это не просто синтакс. сахар. Это почти подсказка нерадивым программерам о том что все множества имеют много общего с множествами натуральных чисел. В частности это обображение любой коллекции на множество натуральных чисел. LF>>Отображение на множество не имеет ничего общего с перебором. Мухи отдельно, котлеты отдельно.
_>Неправда. Порядок перебора как раз и определяется тем как вы отобразили ваше множество на множество натуральных чисел. Можно конечно считать и наоборот что отображение зависит от перебора. Но мы то обсуждаем случай когда необходимо перебрать и в процессе перебора использовать индекс. Я же сразу привел проблему а потом решение которое мне нравилось бы. _>Решения с помощью LINQ я сразу отмел, потому что это отдельная технология, это не фича языка (без добавления сборок LINQа нет).
Здравствуйте, barn_czn, Вы писали:
_>Решения с помощью LINQ я сразу отмел, потому что это отдельная технология, это не фича языка (без добавления сборок LINQа нет).
Тебе же уже показали, что ты ошибаешься. Получение индекса вполне реализуется в рамках 2.0
_>Но мы то обсуждаем случай когда необходимо перебрать и в процессе перебора использовать индекс.
То что вам необходимо в переборе использовать индекс это ваша проблема, а не перебора.
Оператор перебора должен только перебирать.
_>Решения с помощью LINQ я сразу отмел, потому что это отдельная технология, это не фича языка (без добавления сборок LINQа нет).
Да ну?
Здравствуйте, barn_czn, Вы писали:
_>Собственно предлагаю нововведение: в теле foreach сделать доступной пропертю Index. Казалось бы при чем тут nemerle?
Здравствуйте, WolfHound, Вы писали:
_>>Собственно предлагаю нововведение: в теле foreach сделать доступной пропертю Index. WH>Казалось бы при чем тут nemerle?
Здравствуйте, Aen Sidhe, Вы писали:
AS>Как быть с коллекциями, к которым понятие "индекс" не применимо? Как быть с коллекциями, которые не гарантируют порядок членов? В конце концов, как быть с бесконечными последовательностями?
Индекс может быть нужен не для индексации, а например, для того чтобы вывести его на экран или в ХТМЛ.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Здравствуйте, MasterZiv, Вы писали:
MZ>Лучше было бы сразу всю функциональность loop-а или (ещё лучше) iterate-тa MZ>из common lisp-а реализовать. Там абсолютно полный охват всех возможных MZ>случаев итераций.
Сложновато. Даже матерые лиспари не все его семантику полностью знают. А уж учить это все...
Лучше уж разбить на несколько конструкций, как в более современных языках сделано.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Здравствуйте, VladD2, Вы писали:
VD>Здравствуйте, Aen Sidhe, Вы писали:
AS>>Как быть с коллекциями, к которым понятие "индекс" не применимо? Как быть с коллекциями, которые не гарантируют порядок членов? В конце концов, как быть с бесконечными последовательностями?
VD>Индекс может быть нужен не для индексации, а например, для того чтобы вывести его на экран или в ХТМЛ.
Вот уж куда-куда, а в html индекс не нужен. А так — отобрази явно на то, что тебе надо и выводи.
Здравствуйте, Aen Sidhe, Вы писали:
VD>>Индекс может быть нужен не для индексации, а например, для того чтобы вывести его на экран или в ХТМЛ. AS>Вот уж куда-куда, а в html индекс не нужен.
А на экране нужен?
Если нам не помогут, то мы тоже никого не пощадим.
Здравствуйте, Lloyd, Вы писали:
L>Здравствуйте, barn_czn, Вы писали:
_>>Решения с помощью LINQ я сразу отмел, потому что это отдельная технология, это не фича языка (без добавления сборок LINQа нет).
L>Тебе же уже показали, что ты ошибаешься. Получение индекса вполне реализуется в рамках 2.0
Ну видимо не показали.
Получение индекса впринципе конечно реализуется, я ведь сам и показал как в самом начале.
Здравствуйте, LF, Вы писали:
_>>Но мы то обсуждаем случай когда необходимо перебрать и в процессе перебора использовать индекс. LF>То что вам необходимо в переборе использовать индекс это ваша проблема, а не перебора. LF>Оператор перебора должен только перебирать.
Перебор ради перебора? Перебор ведь всегда с какой то целью делается. И часто нужен индекс
_>>Решения с помощью LINQ я сразу отмел, потому что это отдельная технология, это не фича языка (без добавления сборок LINQа нет). LF>Да ну?
Здравствуйте, IT, Вы писали:
IT>Здравствуйте, Aen Sidhe, Вы писали:
VD>>>Индекс может быть нужен не для индексации, а например, для того чтобы вывести его на экран или в ХТМЛ. AS>>Вот уж куда-куда, а в html индекс не нужен.
IT>А на экране нужен?
_>Перебор ради перебора? Перебор ведь всегда с какой то целью делается. И часто нужен индекс
Если в процессе перебора нужен индекс, то надо использовать другие структуры данных и другие методы (for).
Если класс отдает IEnumerable значит индекс для работы не требуется, а если все таки требуется — ошибка проектирования.
А ошибки не надо сглаживать сомнительными костылями в языке.
_>>>Решения с помощью LINQ я сразу отмел, потому что это отдельная технология, это не фича языка (без добавления сборок LINQа нет). LF>>Да ну? _>Ну да.
Linq находиться в System.Core, это часть платформы, а не какая то отдельная технология.
Здравствуйте, barn_czn, Вы писали:
L>>Тебе же уже показали, что ты ошибаешься. Получение индекса вполне реализуется в рамках 2.0
_>Ну видимо не показали.
Посмотри пример gandjustas-а. Теолько не смущайся наличием там Select, его можно вполне переписать и без него, с yield return.