U>Объединение произвольного количества коллекций.
не понял. вы про ф-цию Combine говорите?
я спрашивал что означает конструкция _. (подчерк-точка) с точки зрения языка.
Здравствуйте, Muxa, Вы писали:
M>не понял. вы про ф-цию Combine говорите? M>я спрашивал что означает конструкция _. (подчерк-точка) с точки зрения языка.
Здравствуйте, Undying, Вы писали: G>>А с break что получишь? Тот же самый 0 при наивной реализации или придется более сложные конструкции городить. U>Каким это таким образом этот код запишет в match 0 при отсутствии item'ов удовлетворяющих критерию?
U>
U> int? match = null;
U> foreach (var item in items)
U>
Ну там тоже можно сделать:
matches.Select(_=>(int?)_).FirstOrDefault()
Короче бы получилось: from .... (int?)select
Но это гораздо хуже.
Плохо, т.к. надо постоянно помнить с коллекцией структур или с коллекцией классов происходит работа. Вот если бы к этой функции можно было добавить функцию для классов с тем же именем:
public static T FirstOrNull<T>(this IEnumerable<T> en) where T: class
{
}
то было бы нормально. Однако фиг, компилятор этого сделать не даст.
Здравствуйте, Undying, Вы писали:
U>Здравствуйте, gandjustas, Вы писали:
G>>А с break что получишь? Тот же самый 0 при наивной реализации или придется более сложные конструкции городить.
U>Каким это таким образом этот код запишет в match 0 при отсутствии item'ов удовлетворяющих критерию?
U>
U> int? match = null;
U> foreach (var item in items)
U> {
U> if (criteria.All(criterion => criterion.IsMetBy(item)))
U> {
U> match = item;
U> break;
U> }
U> }
U>
Думаешь сложно сделать преобразование к int? в коде с Linq?
Здравствуйте, Undying, Вы писали:
U>Здравствуйте, Nose, Вы писали:
N>>intention лучше выражен.
U>Е-мое, сколько новых модных слов появилось, у тебя intention, у gandjustas'а composition. А разъяснить что эти слова значат можете?
intention — намерение, суть того что делает код.
composition — композиция, имеется ввиду функциональная, применение одной функции (в общем куска кода) к результату работы другой.
Это наилучший вид композиции, другие виды композиции, например через изменяемое состояние, гораздо хуже.
U>Кто-то написал, в стандартной библиотеке такого класса нет:
а в первом вашем сообщении _ (подчерк) это имя класса? (тогда метод должен быть статическим)
или экземпляр? (тогда должно присутствовать объявление переменной)
U> foreach (var ss in new[] { sr.WorkingSegments, sr.ProtectionSegments })
U> foreach (ServiceSegment s in ss)
U> foreach (SegmentParcel p in s.SegmentParcels)
U> {
U> if (p.NetworkConnection != null)
U> Collect(p.NetworkConnection, protection);
U> }
U>
U>В функциональном варианте 250 символов, в императивном 220, т.е. даже меньше.
Твой код не работает потому что ss имеет тип ServiceSegmentCollection [] те. нужен еще один foreach
Здравствуйте, Lloyd, Вы писали:
I>>смотрится покрасивше, но это плохой способ.
L>Это хороший способ. Два плохих я не стал квотить.
Еще мне не нравится sql-подобный синтаксис Сильно неясно, зачем его воткнули в язык.
I>>Один из хелперов ты скипнул почему то и заменил на цикл.
L>Их пристраивать просто не нужно. Не надо в одну кучу валить получение данных и обработку, потом вам за это спасибо скажут.
Я разделяю только кода это действитльно нужно. Т.е. когда мне на момент написания кода это необходимо.
Здравствуйте, Ikemefula, Вы писали:
L>>Это хороший способ. Два плохих я не стал квотить.
I>Еще мне не нравится sql-подобный синтаксис Сильно неясно, зачем его воткнули в язык.
А мне нравится. Имхо, гораздо читабельнее, чем нагромождение extension-методов.
I>>>Один из хелперов ты скипнул почему то и заменил на цикл.
L>>Их пристраивать просто не нужно. Не надо в одну кучу валить получение данных и обработку, потом вам за это спасибо скажут.
I>Я разделяю только кода это действитльно нужно. Т.е. когда мне на момент написания кода это необходимо.
Здравствуйте, Muxa, Вы писали:
M>а в первом вашем сообщении _ (подчерк) это имя класса? (тогда метод должен быть статическим) M>или экземпляр? (тогда должно присутствовать объявление переменной)
Подчеркивание это тип класса, метод Combine разумеется статический.
Здравствуйте, gandjustas, Вы писали:
G>1)Количеством строк. G>2)FirstOrDefault гораздо понятнее, чем использование break. FirstOrDefault лучше отражает суть того что происходит. G>3)В случае Linq matches это объект, который можно куда-то передать или как-то обработать, в случае с циклом такого не выйдет.
Здравствуйте, Ikemefula, Вы писали:
I>Твой код не работает потому что ss имеет тип ServiceSegmentCollection [] те. нужен еще один foreach
А так работает?
foreach (var ss innew IEnumerable[] { sr.WorkingSegments, sr.ProtectionSegments })
foreach (ServiceSegment s in ss)
foreach (SegmentParcel p in s.SegmentParcels)
{
if (p.NetworkConnection != null)
Collect(p.NetworkConnection, protection);
}
Здравствуйте, gandjustas, Вы писали:
G>composition — композиция, имеется ввиду функциональная, применение одной функции (в общем куска кода) к результату работы другой. G>Это наилучший вид композиции, другие виды композиции, например через изменяемое состояние, гораздо хуже.
Это потому что все остальные виды композиции хуже, до недавнего времени среди мэйнстримовских языков не было ни одного функционального?