
Vyacheslav
23.06.2017
09:38:49
ребят. у меня есть вот такой экстеншен
public static IEnumerable<TEntity> DoAll<TEntity>(this IEnumerable<TEntity> entities, Action<TEntity> action)
{
if (entities != null)
{
foreach (var __entity in entities)
{
if (__entity != null)
{
action(__entity);
}
}
}
return entities;
}
как мне его подружить с yield?
ну т.е. я хочу использовать вместо этого
foreach (var l in lines)
{
yield return l;
}
вот это
lines.DoAll(o =>
{
yield return o;
});

Blue Screen of Death
23.06.2017
09:44:19
Мде

Anton
23.06.2017
09:44:27
Action не может ничего возвращать, и вообще тухлая идея

Google

Blue Screen of Death
23.06.2017
09:44:48
Код ради кода, супер

Олег
23.06.2017
09:45:55

Vyacheslav
23.06.2017
09:45:58

Олег
23.06.2017
09:46:52
Так не надо писать, а то новичкам дурной пример, кек

Vyacheslav
23.06.2017
09:47:17
ну блин можно что угодно туда подставить
хоть yield return l*2/0.005
это не важно
самое главно что из-за Action не получится использовать yield?

Олег
23.06.2017
09:48:55
Action<T> он возвращает void

Vyacheslav
23.06.2017
09:49:18
угу. это я знаю

Олег
23.06.2017
09:49:33
Ну и зах он тебе?
Пихни Function<T1, T2>

Google

Vyacheslav
23.06.2017
09:50:19

Nikita
23.06.2017
09:53:23
2017-ая студия, она такая, нормально только на превью-билдах сидеть получается

Gid
23.06.2017
09:54:45
Ни вылетов ни эрорров

Artem
23.06.2017
10:01:57

Nikolay
23.06.2017
10:03:52
У меня 2017 за день может пару раз упасть

Ilya
23.06.2017
10:04:20

Vyacheslav
23.06.2017
10:04:47
Action<T> он возвращает void

Ilya
23.06.2017
10:05:35
посмотри внимательно
там переманная называется экшн

Blue Screen of Death
23.06.2017
10:05:57
У меня 2012, я не понимаю, о чем вы ?

Летучая
23.06.2017
10:06:36
Ваще не падает 2017
Раньше да, сейчас нет

Andrew
23.06.2017
10:07:26
Стоит ставить?

Летучая
23.06.2017
10:07:40

Олег
23.06.2017
10:07:41

Ilya
23.06.2017
10:08:06
ну я прост не поменял переменную, тип поменял

Летучая
23.06.2017
10:11:12
Это во всех студиях, если хамл
Лечит клин/ребилд
С хамлами вообще жуткая история
Свойства и методы родительских интерфейсов x:Bind не признаёт, родительские классы признает, но в некоторых случаях сыплет ворнингами (хотя код валидный, хороший и всё работает)

Google

Nikita
23.06.2017
10:15:10

Vyacheslav
23.06.2017
10:20:07

Ilya
23.06.2017
10:20:55
тогда не понятно что тебе вообще надо

Vyacheslav
23.06.2017
10:22:12

Ilya
23.06.2017
10:22:26
тебе надо изменять коллекцию?
а не создавать новую?

Vyacheslav
23.06.2017
10:22:37
не
я этот экстеншн использую вместо foreach

Ilya
23.06.2017
10:23:20
>тебе надо изменять коллекцию?
ок, эллементы коллекции
тогда тебе .ToList().ForEach()

Vyacheslav
23.06.2017
10:23:58
я там ничего не меняю с коллекцией
ForEach работает почти так же
он умеет только в лист, мой же умеет в ienumerable

Ilya
23.06.2017
10:25:19
ну ок, тогда тебе не нужен yield и не надо пытаться его туда впихнуть

Vyacheslav
23.06.2017
10:25:46
ага. я уже это понял. по этому переписал на обычный foreach

Friedrich
23.06.2017
10:27:14
Пасаны, в лямбдах вообще нельзя yield return.

Ilya
23.06.2017
10:28:27
а мы и не про лямбду
а про экстеншн метод

Friedrich
23.06.2017
10:29:11
ну т.е. я хочу использовать вместо этого
foreach (var l in lines)
{
yield return l;
}
вот это
lines.DoAll(o =>
{
yield return o;
});

Google

Friedrich
23.06.2017
10:29:25
Как видишь, он в лямбду пытается сунуть yield return.

Vyacheslav
23.06.2017
10:32:34

Sergey
23.06.2017
10:32:45
потому что это не работает? )

Vyacheslav
23.06.2017
10:33:37
в точку

Ilya
23.06.2017
10:33:37

Летучая
23.06.2017
10:33:37
А если лямбда содержит форич
С йилдом

Friedrich
23.06.2017
10:33:51
Не скомпилируется.
Используй локальные функции из C# 7.

Ilya
23.06.2017
10:34:36
вчера обсуждали как в MoreLinq отрефакторили локальные методы
красиво пиздец
https://github.com/morelinq/MoreLINQ/blob/master/MoreLinq/DistinctBy.cs
71 строка

Friedrich
23.06.2017
10:35:51
Ха, интересно.

Олег
23.06.2017
10:36:32

Sergey
23.06.2017
10:36:38

Friedrich
23.06.2017
10:37:09

Sergey
23.06.2017
10:37:34
ничего интересного

Летучая
23.06.2017
10:37:38
Это же локальная функция как раз и есть

Google

Sergey
23.06.2017
10:37:41
_ - это название метода )

Friedrich
23.06.2017
10:37:54
И?

Летучая
23.06.2017
10:38:12
Хотя может ввести в заблуждение

Sergey
23.06.2017
10:38:14
а чо интересного то? просто кто-то упоролся и так метод назвал
наркотики - это такое дело

Летучая
23.06.2017
10:38:25
Щас бы объявлять методы
После ретурна

Ilya
23.06.2017
10:38:46
не надо локального метода

Friedrich
23.06.2017
10:39:22
Ошибаешься.

Ilya
23.06.2017
10:39:36
на зочем

Friedrich
23.06.2017
10:39:41
Вот тебе вопрос на засыпку: поясни, в чём будет разница в поведении метода, если этот локальный метод заинлайнить.

Олег
23.06.2017
10:39:45
О, локальные функции в C# 7.
Чо, теперь можно запилить вычисление факториала хвостовой рекурсией?

Friedrich
23.06.2017
10:39:53
Вопрос и правда интересный, я не шучу.
Эта группа больше не существует