C# - pattern matching - many discards
Не имею понятия, для себя не пользую, вот нашел какой то примерчик. Покажите плиз...
А DbSet и IEnumerable со своими расширениями это что? Без LINQ этот EF - малополезная хрень.
Вот рекомендации например:
https://learn.microsoft.com/en-us/aspnet/core/data/ef-mvc/...
Никаких извращений
Там делегаты в первом же примере.
еще- изменить день недели
- изменить изменить порядковый номер дня в году
- изменить изменить порядковый номер недели в году
Самое смешное что это реальные требования потребителей.
Ну так дистанция между требованиями и реализацией может быть чуть меньше чем бесконечность, что многократно обсосано в программистком эпосе ну типа во так:
https://github.com/dotnet/runtime/blob/main/src/libraries/...
Так это имелось в виду?
public static TSource First<TSource>(this IEnumerable<TSource> source, Func<TSource, bool> predicate) { TSource? first = source.TryGetFirst(predicate, out bool found); if (!found) { ThrowHelper.ThrowNoMatchException(); } return first!; }
фу. Плюнуть в спину, когда ничего возразить не можешь.
Чему тут возражать? Было дано задание, в ответ только мычание, что за такое у нас лицо бьют.
Самое смешное что это реальные требования потребителей.
Это требование современности - решать задачи актуальными инструментами.
12 год - да наф нам не нужон этот ваш делегат.На всякий случай, Ололёшеньке всё равно, он у нас дурачок, по-англицки читать это не его, но вдруг кого удивило.
Во-первых, статья 1997-8 года. Не позднее. Java 1.2 не упоминается. Ну, ашипся ололёшенька. Бывает. (Статья про J++. Кто такое мелкомягкое уродство помнит?)
Во-вторых, суть статьи "нафиг усложнять VM ссылками на методы, если есть внутренние классы".
Ну и, в-третьих, ...
14 год - Джава 8 представляет лямбды и ссылки на методы."Ссылка на метод" в 8-й Яве это не "delegate". Это синтаксический сахар. Который компилятором преобразуется... во внутренний класс. Как и лямбда.
Да понятно, что из подручного мусора и костылей можно слепить что угодно, хоть небоскрёб. Мутить классы, чтобы из них использовать лишь методы, вместо того, чтобы сразу использовать лишь методы - гениальный же дизайн!
А DbSethttps://github.com/mono/entityframework/blob/master/src/En...
Можно копию кода о чём речь?
Речь об этом, на чём у вас все модели соединяются в удобоваримый контекст, а не остаются кучкой бесполезных классов.
Там делегаты в первом же примере.А разве речь о делегатах? Речь об извращениях.
Извращения это имитация ссылок на методы внутренними классами, и пятнадцать лет говорить, что нам не нужны делегаты, а потом делать их через извращения. Потому что ну уже у всех есть, включая главного конкурента.
Потому что ну уже у всех есть,
Ну нужно путать что-то с пальцем
Практически любую вещь можно использовать правильно и неправильно.
Извращения это имитация ссылок на методы внутренними классами, и пятнадцать лет говорить, что нам не нужны делегаты, а потом делать их через извращения. Потому что ну уже у всех есть, включая главного конкурента.
Кроме тебя никто не говорил что в яве есть делегаты. Их в яве нет. В яве есть "ссылки на методы". Так до тебя дойдёт?
А хочешь кукарекать - сначала покажи мне в шарпе (главный конкурент, афигеть, а пацаны-то и не знают) замыкание по значению, а не по ссылке. Потом подумаешь, стоит ли перенимать, не понимая, принципы из других парадигм программирования. Потом разрешу тебе кукарекать.
вместо того, чтобы сразу использовать лишь методы - гениальный же дизайн!
Для объектно-ориентированного языка? Да. Ты про SmallTalk слышал? Там не то что на методы ссылаться, там код на лету менять можно. Почитай, ощути какое отсталое кю твой шарп. А потом опять немного подумай - а почему же мы все не пишем сейчас на таком прекрасном языке.
P.S. а как интересно "ссылки на методы" реализованы в Tcl... Если мелкомягкие шарписты его для себя когда-нибудь откроют, тоже начнут как не в себя тырить, не понимая что и зачем? :)
1. C# уже сильно позже Явы сделали, а потому С# во многих местах сильно лучше, поскольку по граблям уже не ходили, а все просто стырили. Ну скажем у массивов в Яве макс. размер 32 бита (2ГБ), а в C# 64 бита.
2. Надо различать язык и VM. Если в JVM чего-то нет, то значит нет, и в языке надо извращаться. В C# много чего встроили, а потому и в языке легче. Например генерики (классы с параметрами). В JVM их нет. Ну или делегаты.
3. Есть еще идеология. Многие полезные вещи считаются богохульством в ООП-религии. Ява хотела быть святее папы, а в C# все по барабану, лишь бы бабло польза была.
Кроме тебя никто не говорил что в яве есть делегаты. Их в яве нет. В яве есть "ссылки на методы". Так до тебя дойдёт?
сорри за возможно глупый вопрос: но вот это разве не делегаты?
// Function which takes in a number
// and returns half of it
Function<Integer, Double> half = a -> a /
2.0
;
// Applying the function to get the result
System.out.println(half.apply(
10
));
вот это разве не делегаты?
Может быть мы вначале начнём с определения делегатов?
https://learn.microsoft.com/en-us/dotnet/csharp/programmin...
https://www.c-sharpcorner.com/article/send-method-as-param...
это разве не делегаты?
------
Считай что делегат это декларация типа указателя на функцию с типизацией возврата и параметров.