Сообщение Re[3]: 2IT: Предложения по свежим сбросам от 04.05.2016 15:08
Изменено 04.05.2016 15:17 IT
Здравствуйте, Sinix, Вы писали:
S>Криво написал. В общем по-моему и перевода строки тоже не должно быть
S>Я за тюплы, т.к. они будут чаще использоваться. Особенно после c#7. Но эт только моё мнение, подождём остальных
Подождём.
S>>>3.2. После 3.1. рандомный seed можно убрать, он на распределение особо не влияет
IT>>Где именно? В Objects.Random или а GetHashCode компаратора?
S>В GetHashCode компаратора.
Можно вообще выкинуть. Если специалисты так считают.
S>Если оставлять, то надо его получать один раз и запоминать в static-поле (аля EnumHelper.Holder<T>). А то последовательные вызовы несовместимые компареры будут генерить.
Компаратор генерируется только один раз. А само это значение и так сохранятеся навсегда в Expression.Constant. Хотя, если делать компараторы по заданным полям, то проблема может быть.
S>Вариант конечно, но он не все сценарии покрывает. Например, если надо свой comparer в словарик подсунуть или ещё где переиспользовать.
S>В общем ок, пусть тогда висит в списке "добавить, как идеи закончатся"
Да чего там окладывать. Это задача на час. Всего-то чуть расширить существующий код.
S>Если ничего не забыл, то TAccumulate seed отдельным аргументом передаётся. AVK эту перегрузку уже добавил.
Мне вообще вся эта идея с пререгрузками не нравится. Я сделал перегрузку для следующего сценария, если использовать стандартную функцию:
В результате теперь можно писать так:
Просто и понятно. Есть эффект. А что дадут остальные перегрузки мне непонятно Так что я бы их убрал до возникновения необходимости.
S>Криво написал. В общем по-моему и перевода строки тоже не должно быть
S>Я за тюплы, т.к. они будут чаще использоваться. Особенно после c#7. Но эт только моё мнение, подождём остальных
Подождём.
S>>>3.2. После 3.1. рандомный seed можно убрать, он на распределение особо не влияет
IT>>Где именно? В Objects.Random или а GetHashCode компаратора?
S>В GetHashCode компаратора.
Можно вообще выкинуть. Если специалисты так считают.
S>Если оставлять, то надо его получать один раз и запоминать в static-поле (аля EnumHelper.Holder<T>). А то последовательные вызовы несовместимые компареры будут генерить.
Компаратор генерируется только один раз. А само это значение и так сохранятеся навсегда в Expression.Constant. Хотя, если делать компараторы по заданным полям, то проблема может быть.
S>Вариант конечно, но он не все сценарии покрывает. Например, если надо свой comparer в словарик подсунуть или ещё где переиспользовать.
S>В общем ок, пусть тогда висит в списке "добавить, как идеи закончатся"
Да чего там окладывать. Это задача на час. Всего-то чуть расширить существующий код.
S>Если ничего не забыл, то TAccumulate seed отдельным аргументом передаётся. AVK эту перегрузку уже добавил.
Мне вообще вся эта идея с пререгрузками не нравится. Я сделал перегрузку для следующего сценария, если использовать стандартную функцию:
exs.Aggregate((Expression)null, (e1,e2) => e1 == null ? e2 : Expression.AndAlso(e1, e2), e => e ?? Expression.Constant(true));
В результате теперь можно писать так:
exs.AggregateOrDefault(Expression.AndAlso, () => Expression.Constant(true));
Просто и понятно. Есть эффект. А что дадут остальные перегрузки мне непонятно Так что я бы их убрал до возникновения необходимости.
Re[3]: 2IT: Предложения по свежим сбросам
Здравствуйте, Sinix, Вы писали:
S>Криво написал. В общем по-моему и перевода строки тоже не должно быть
S>Я за тюплы, т.к. они будут чаще использоваться. Особенно после c#7. Но эт только моё мнение, подождём остальных
Подождём.
S>>>3.2. После 3.1. рандомный seed можно убрать, он на распределение особо не влияет
IT>>Где именно? В Objects.Random или а GetHashCode компаратора?
S>В GetHashCode компаратора.
Можно вообще выкинуть. Если специалисты так считают.
S>Если оставлять, то надо его получать один раз и запоминать в static-поле (аля EnumHelper.Holder<T>). А то последовательные вызовы несовместимые компареры будут генерить.
Компаратор генерируется только один раз. А само это значение и так сохранятеся навсегда в Expression.Constant. Хотя, если делать компараторы по заданным полям, то проблема может быть.
S>Вариант конечно, но он не все сценарии покрывает. Например, если надо свой comparer в словарик подсунуть или ещё где переиспользовать.
S>В общем ок, пусть тогда висит в списке "добавить, как идеи закончатся"
Да чего там окладывать. Это задача на час. Всего-то чуть расширить существующий код.
S>Если ничего не забыл, то TAccumulate seed отдельным аргументом передаётся. AVK эту перегрузку уже добавил.
Мне вообще вся эта идея с пререгрузками не нравится. Я сделал перегрузку для следующего сценария, если использовать стандартную функцию:
В результате теперь можно писать так:
Просто и понятно. Есть эффект. А что дадут остальные перегрузки мне непонятно Так что я бы их убрал до возникновения необходимости.
UPDT:
Фактически эта перегрузка есть фикс косяка, когда последовательность пуста, следующей стандартной функции:
S>Криво написал. В общем по-моему и перевода строки тоже не должно быть
S>Я за тюплы, т.к. они будут чаще использоваться. Особенно после c#7. Но эт только моё мнение, подождём остальных
Подождём.
S>>>3.2. После 3.1. рандомный seed можно убрать, он на распределение особо не влияет
IT>>Где именно? В Objects.Random или а GetHashCode компаратора?
S>В GetHashCode компаратора.
Можно вообще выкинуть. Если специалисты так считают.
S>Если оставлять, то надо его получать один раз и запоминать в static-поле (аля EnumHelper.Holder<T>). А то последовательные вызовы несовместимые компареры будут генерить.
Компаратор генерируется только один раз. А само это значение и так сохранятеся навсегда в Expression.Constant. Хотя, если делать компараторы по заданным полям, то проблема может быть.
S>Вариант конечно, но он не все сценарии покрывает. Например, если надо свой comparer в словарик подсунуть или ещё где переиспользовать.
S>В общем ок, пусть тогда висит в списке "добавить, как идеи закончатся"
Да чего там окладывать. Это задача на час. Всего-то чуть расширить существующий код.
S>Если ничего не забыл, то TAccumulate seed отдельным аргументом передаётся. AVK эту перегрузку уже добавил.
Мне вообще вся эта идея с пререгрузками не нравится. Я сделал перегрузку для следующего сценария, если использовать стандартную функцию:
exs.Aggregate((Expression)null, (e1,e2) => e1 == null ? e2 : Expression.AndAlso(e1, e2), e => e ?? Expression.Constant(true));
В результате теперь можно писать так:
exs.AggregateOrDefault(Expression.AndAlso, () => Expression.Constant(true));
Просто и понятно. Есть эффект. А что дадут остальные перегрузки мне непонятно Так что я бы их убрал до возникновения необходимости.
UPDT:
Фактически эта перегрузка есть фикс косяка, когда последовательность пуста, следующей стандартной функции:
public static TSource Aggregate<TSource>(this IEnumerable<TSource> source, Func<TSource, TSource, TSource> func)
{
if (source == null) throw Error.ArgumentNull("source");
if (func == null) throw Error.ArgumentNull("func");
using (IEnumerator<TSource> e = source.GetEnumerator()) {
if (!e.MoveNext()) throw Error.NoElements();
TSource result = e.Current;
while (e.MoveNext()) result = func(result, e.Current);
return result;
}
}