@CSharpChatЭта группа больше не существует

Страница 1303 из 1888
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
Код ради кода, супер
у листа ForEach почти то же самое делает

Олег
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
Пихни Function<T1, T2>
оке. спасибо

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

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

Vyacheslav
23.06.2017
10:04:47
https://pastebin.com/h7JdXCjD
не будет так работать)

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: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
тогда не понятно что тебе вообще надо
ну я выше описал как хотел бы видеть, но так не получится т.к. обязательно должен быть action а не func

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
Как видишь, он в лямбду пытается сунуть yield return.
да я уже понял почему это плохо)

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

Vyacheslav
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
Пасаны, в лямбдах вообще нельзя yield return.
А слона-то мы и не приметили

Sergey
23.06.2017
10:36:38
Ха, интересно.
чего интересно? )

Friedrich
23.06.2017
10:37:09
чего интересно? )
return _(); IEnumerable<TSource> _() { ... } — вот это интересно.

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
return _(); IEnumerable<TSource> _() { ... } — вот это интересно.
дело в том, что там это не надо вообще

не надо локального метода

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
Вопрос и правда интересный, я не шучу.

Страница 1303 из 1888

Эта группа больше не существует Эта группа больше не существует