Re[14]: Нововведение в foreach
От: Lloyd Россия  
Дата: 15.09.10 07:33
Оценка:
Здравствуйте, LF, Вы писали:

_>>>>Решения с помощью LINQ я сразу отмел, потому что это отдельная технология, это не фича языка (без добавления сборок LINQа нет).

LF>>>Да ну?
_>>Ну да.
LF>Linq находиться в System.Core, это часть платформы, а не какая то отдельная технология.

Т.е. если завтра тебе придет задача "добавить номера строк в таблицу", то ты станешь перекраивать все слои приложения, не смотря на то, что задача относится исключительно к UI?
Re[15]: Нововведение в foreach
От: LF  
Дата: 15.09.10 07:47
Оценка: :)
L>Т.е. если завтра тебе придет задача "добавить номера строк в таблицу", то ты станешь перекраивать все слои приложения, не смотря на то, что задача относится исключительно к UI?
Конечно нет, ради такой мелочи не буду.
Re[16]: Нововведение в foreach
От: Lloyd Россия  
Дата: 15.09.10 07:49
Оценка: +1 :)
Здравствуйте, LF, Вы писали:

L>>Т.е. если завтра тебе придет задача "добавить номера строк в таблицу", то ты станешь перекраивать все слои приложения, не смотря на то, что задача относится исключительно к UI?

LF>Конечно нет, ради такой мелочи не буду.

Т.е. допустишь "ошибку проуктирования"? Вах, нехорошо.
Re[17]: Нововведение в foreach
От: LF  
Дата: 15.09.10 08:31
Оценка: :)
L>Т.е. допустишь "ошибку проуктирования"? Вах, нехорошо.
да, придется изворачиваться, если аналитики не продумали данное требование.
Re[18]: Нововведение в foreach
От: Lloyd Россия  
Дата: 15.09.10 08:34
Оценка: +3 -1
Здравствуйте, LF, Вы писали:

L>>Т.е. допустишь "ошибку проуктирования"? Вах, нехорошо.

LF>да, придется изворачиваться, если аналитики не продумали данное требование.

Или понять, что никакой "ошибкой проектирования" это не является.
Re[2]: Нововведение в foreach
От: barn_czn  
Дата: 15.09.10 09:13
Оценка:
Здравствуйте, WolfHound, Вы писали:

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


_>>Собственно предлагаю нововведение: в теле foreach сделать доступной пропертю Index.

WH>Казалось бы при чем тут nemerle?
Автор: VladD2
Дата: 23.07.10


Во, нормално.
Re[2]: Нововведение в foreach
От: Lloyd Россия  
Дата: 15.09.10 09:20
Оценка: 2 (1) +1
Здравствуйте, WolfHound, Вы писали:

_>>Собственно предлагаю нововведение: в теле foreach сделать доступной пропертю Index.

WH>Казалось бы при чем тут nemerle?
Автор: VladD2
Дата: 23.07.10


Кстати, а pattern-mathcing внутри foreach работает? Если да, то того же фунционала иожно было бы добиться "меньшей кровью", что-то типа

foreach ((x, i) in xs.WithIndex())

, где WithIndex — простой extension-метод.
Re[6]: Нововведение в foreach
От: IT Россия linq2db.com
Дата: 16.09.10 02:33
Оценка:
Здравствуйте, Aen Sidhe, Вы писали:

IT>>А на экране нужен?

AS> Если криво делать, то нужен.

Криво делать что?
Если нам не помогут, то мы тоже никого не пощадим.
Re[3]: Нововведение в foreach
От: batu Украина  
Дата: 16.09.10 04:42
Оценка: :))
Здравствуйте, IT, Вы писали:

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


_>>>Собственно предлагаю нововведение: в теле foreach сделать доступной пропертю Index.

WH>>Казалось бы при чем тут nemerle?
Автор: VladD2
Дата: 23.07.10


IT>А я вот проявил большую выдержку

Интересное решение. Конечно, синтаксис усложняется но это мелочи. Необходимость определять индекс элемента принадлежащего какому-то объединению объектов возникает не только в операторах ForEach. Поэтому общее решение необходимо искать в определении объединения объектов. Если сделать доступным свойство Index ДЛЯ ВСЕХ объектов входящих в любые объединения изменится даже стиль программирования. Можете проверить на сортировках. Понятно, для реализации такой идеи необходимо в каждом объекте входящем в объединение либо добавлять область памяти для этого индекса, либо иметь функционал для его вычисления. У себя в языке я делаю это объявляя коллекцию или все что угодно как Indexed. Тогда любой элемент добавляемый в такую коллекцию получает собственное свойство Index.
Re[3]: Нововведение в foreach
От: VladD2 Российская Империя www.nemerle.org
Дата: 20.09.10 01:42
Оценка:
Здравствуйте, Lloyd, Вы писали:

L>Кстати, а pattern-mathcing внутри foreach работает?


Работает.

L>Если да, то того же фунционала иожно было бы добиться "меньшей кровью", что-то типа


L>
L>foreach ((x, i) in xs.WithIndex())
L>

L>, где WithIndex — простой extension-метод.

Такое решение менее эффективно. Пакра генерирует оптимальный код для разных видов коллекций.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[14]: Нововведение в foreach
От: barn_czn  
Дата: 20.09.10 03:10
Оценка:
Здравствуйте, LF, Вы писали:

_>>Перебор ради перебора? Перебор ведь всегда с какой то целью делается. И часто нужен индекс

LF>Если в процессе перебора нужен индекс, то надо использовать другие структуры данных и другие методы (for).
LF>Если класс отдает IEnumerable значит индекс для работы не требуется, а если все таки требуется — ошибка проектирования.
LF>А ошибки не надо сглаживать сомнительными костылями в языке.

Вы ерунду сейчас сказали.
Вот вам типичный пример: надо сделать метод вычисляющий сумму по i от f(x[i], i). И что, какой тип данных вы выберите для входной коллекции x ? По вашей логике тип должен имеплементировать IList (чтобы применить for). А по здравой логике минималистичных требований к входным данным — надо выбрать IEnumerable.

Посмотрите вообще как проектируются разные библитеки, например гриды. Все они принимают в качестве датасорса тип IEnumerable. И проход for-ом впринципе не работает.
Re[4]: Нововведение в foreach
От: VladD2 Российская Империя www.nemerle.org
Дата: 20.09.10 04:03
Оценка: :)
Здравствуйте, Lloyd, Вы писали:

L>Зачем совать в язык функционал, который прекрасно реализуется простым методом расширения?


Для удобства?

Или может для скорости?

А может для того и другого?

Я угадал?

А вообще, да. Совать лучше в библиотеку ... макросов!
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[5]: Нововведение в foreach
От: Lloyd Россия  
Дата: 20.09.10 07:32
Оценка:
Здравствуйте, VladD2, Вы писали:

L>>Зачем совать в язык функционал, который прекрасно реализуется простым методом расширения?


VD>Для удобства?


VD>Или может для скорости?


VD>А может для того и другого?


VD>Я угадал?


Я не понял смысл твоего поста? Ты съязвить что-ли пытался? У тебя не получилось.
Re[6]: Нововведение в foreach
От: VladD2 Российская Империя www.nemerle.org
Дата: 20.09.10 11:38
Оценка: 13 (1) +1 :)
Здравствуйте, Lloyd, Вы писали:

L>>>Зачем совать в язык функционал, который прекрасно реализуется простым методом расширения?


VD>>Для удобства?


VD>>Или может для скорости?


VD>>А может для того и другого?


VD>>Я угадал?


L>Я не понял смысл твоего поста? Ты съязвить что-ли пытался? У тебя не получилось.


Ты задал вопрос. Я попытался угадать ответы.

Вообще ежу понятно, что 99 вещей в язык можно смело не вставлять. Тот же foreach можно спокойно заменить на метод ForEach при наличии лямбд. Но таки foreach удобнее. И то что у людей возникает желание не напрягаясь получить индекс при переборе — это нормально. В C# половина фич сделана для удобства, а не из соображений дикой необходимости.

Лично я прикрутил к foreach индекс когда в 256-й раз начал изготовляться с методом IterI (коий в немерле есть почти везде). Очень жаль что в шарпе нет такой фичи как макросы. Иначе индексы в foreach-е были бы уже давно и никто бы не гнал бредятины об ошибках в проектировании и т.п.

Вообще разговоры об ошибках в проектировании — это такая своеобразная лакмусова бумажка говорящая о наличии серьезного батхерта.

Эта тема просто пронизана батхертом, что лично меня очень сильно позабавило.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[4]: Нововведение в foreach
От: Sinclair Россия https://github.com/evilguest/
Дата: 22.09.10 12:08
Оценка:
Здравствуйте, batu, Вы писали:
B>Интересное решение. Конечно, синтаксис усложняется но это мелочи. Необходимость определять индекс элемента принадлежащего какому-то объединению объектов возникает не только в операторах ForEach. Поэтому общее решение необходимо искать в определении объединения объектов. Если сделать доступным свойство Index ДЛЯ ВСЕХ объектов входящих в любые объединения изменится даже стиль программирования. Можете проверить на сортировках. Понятно, для реализации такой идеи необходимо в каждом объекте входящем в объединение либо добавлять область памяти для этого индекса, либо иметь функционал для его вычисления. У себя в языке я делаю это объявляя коллекцию или все что угодно как Indexed. Тогда любой элемент добавляемый в такую коллекцию получает собственное свойство Index.
Особенно здорово это должно работать для изменяемых коллекций. Стоит сделать Remove(0) и можно идти заваривать кофе.
Уйдемте отсюда, Румата! У вас слишком богатые погреба.
Re[5]: Нововведение в foreach
От: batu Украина  
Дата: 22.09.10 12:40
Оценка:
Здравствуйте, Sinclair, Вы писали:

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

B>>Интересное решение. Конечно, синтаксис усложняется но это мелочи. Необходимость определять индекс элемента принадлежащего какому-то объединению объектов возникает не только в операторах ForEach. Поэтому общее решение необходимо искать в определении объединения объектов. Если сделать доступным свойство Index ДЛЯ ВСЕХ объектов входящих в любые объединения изменится даже стиль программирования. Можете проверить на сортировках. Понятно, для реализации такой идеи необходимо в каждом объекте входящем в объединение либо добавлять область памяти для этого индекса, либо иметь функционал для его вычисления. У себя в языке я делаю это объявляя коллекцию или все что угодно как Indexed. Тогда любой элемент добавляемый в такую коллекцию получает собственное свойство Index.
S>Особенно здорово это должно работать для изменяемых коллекций. Стоит сделать Remove(0) и можно идти заваривать кофе.
Кофе получится, а Remove для Indexed-коллекций нет.
Re[6]: Нововведение в foreach
От: Sinclair Россия https://github.com/evilguest/
Дата: 23.09.10 05:08
Оценка:
Здравствуйте, batu, Вы писали:

S>>Особенно здорово это должно работать для изменяемых коллекций. Стоит сделать Remove(0) и можно идти заваривать кофе.

B>Кофе получится, а Remove для Indexed-коллекций нет.
Ну вот видите как здорово — у всех есть, а у вас нету. Получается, что решение одной проблемы (умение определять индекс по элементу) приводит к другой проблеме (невозможность удалять элементы из коллекции).
В каком-то частном случае это может и сработать, но претендовать на общее решение это никак не может.
Уйдемте отсюда, Румата! У вас слишком богатые погреба.
Re[7]: Нововведение в foreach
От: batu Украина  
Дата: 23.09.10 07:38
Оценка:
Здравствуйте, Sinclair, Вы писали:

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


S>>>Особенно здорово это должно работать для изменяемых коллекций. Стоит сделать Remove(0) и можно идти заваривать кофе.

B>>Кофе получится, а Remove для Indexed-коллекций нет.
S>Ну вот видите как здорово — у всех есть, а у вас нету. Получается, что решение одной проблемы (умение определять индекс по элементу) приводит к другой проблеме (невозможность удалять элементы из коллекции).
S>В каком-то частном случае это может и сработать, но претендовать на общее решение это никак не может.
Так выбор в руках пользователя. Что ему важнее в конкретном случае. Да и проблем быть не должно. Если коллекция предполагает удаление, то поиск элемента по любому усложняется.
Re[8]: Нововведение в foreach
От: Sinclair Россия https://github.com/evilguest/
Дата: 23.09.10 11:29
Оценка:
Здравствуйте, batu, Вы писали:
B>Так выбор в руках пользователя. Что ему важнее в конкретном случае. Да и проблем быть не должно. Если коллекция предполагает удаление, то поиск элемента по любому усложняется.
Я правильно понимаю, что реализацию индексированной коллекции, которая позволяет эффективные удаления элементов, вы считаете невозможной? Тогда вам предстоит открыть ещё очень много нового.
Уйдемте отсюда, Румата! У вас слишком богатые погреба.
Re[9]: Нововведение в foreach
От: batu Украина  
Дата: 23.09.10 12:26
Оценка:
Здравствуйте, Sinclair, Вы писали:

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

B>>Так выбор в руках пользователя. Что ему важнее в конкретном случае. Да и проблем быть не должно. Если коллекция предполагает удаление, то поиск элемента по любому усложняется.
S>Я правильно понимаю, что реализацию индексированной коллекции, которая позволяет эффективные удаления элементов, вы считаете невозможной? Тогда вам предстоит открыть ещё очень много нового.
Ну, ты царь! Я предложил индексированые коллекции, и тут же я в них не верю. Да еще мне их предстоит открыть..
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.