русский

C# - pattern matching - many discards

17371   6 7 8 9 10 11 12 13 14 15 16 alle
Срыв покровов патриот10.03.24 19:21
NEW 10.03.24 19:21 
in Antwort alex445 10.03.24 19:08

select и SelectMany это вообще про другое.

Напиши код на с#, который не сделать на Яве.

alex445 коренной житель10.03.24 19:30
NEW 10.03.24 19:30 
in Antwort Срыв покровов 10.03.24 19:21, Zuletzt geändert 10.03.24 19:31 (alex445)

Как про другое, если это оно и есть?

https://docs.oracle.com/javase/8/docs/api/java/util/functi...


Написать можно что угодно на чём угодно. Только на одном это будет легко и приятно, а на другом нет. Вспоминаем.

AlexNek патриот10.03.24 20:00
AlexNek
NEW 10.03.24 20:00 
in Antwort MrSanders 10.03.24 18:55
Нет, мне просто интересно как в шарпе реализовали именно ссылки на методы

Ну тут вроде достаточно много

https://www.tutorialsteacher.com/csharp/csharp-delegates


Если недостаточно, опишите подробнее, что именно интересует.


Есть подозрения, что начнётся новый вой, что в этом хх языке и Multicast Delegate нету спок

alex445 коренной житель10.03.24 20:30
NEW 10.03.24 20:30 
in Antwort AlexNek 10.03.24 20:00, Zuletzt geändert 10.03.24 20:38 (alex445)

Ну тут вроде достаточно много
https://www.tutorialsteacher.com/csharp/csharp-delegates

Только потом читатели букварей забывают забыть все эти MyDelegate(string msg), и начать пользоваться обычными Action и Func. Так и продолжают клепать свои однотипные делегаты на каждый чих.


в этом хх языке и Multicast Delegate нету

Я уже привык, что многое в Джаве, включая делегаты - кривое-косое-урезанное. После Сишарпа - будто переехал из своего дома в общагу. Как правильно отмечают в беседах на том же Stackoverflow, создатели Джава слишком ограничили себя "чистым ООП", загнали в сами себе же созданные рамки ради идеологии, принеся в жертву реальные потребности. Шарп оказался гибче и этим лучше. Да плюс возник попозже, учтя ошибки Джавы. "Что отвердело, то не победит."

Срыв покровов патриот10.03.24 20:38
NEW 10.03.24 20:38 
in Antwort alex445 10.03.24 19:30

Алекс, ты три дня старперов за пояс затыкаешь и тут такой прокол на мелочах. Соберись.
сишарповский Select это аналог map() в stream api в Яве


Срыв покровов патриот10.03.24 20:42
NEW 10.03.24 20:42 
in Antwort Срыв покровов 10.03.24 20:38

метод andThen из двух делегатов делает новый делегат

MrSanders коренной житель10.03.24 20:44
NEW 10.03.24 20:44 
in Antwort AlexNek 10.03.24 20:00
Ну тут вроде достаточно много
https://www.tutorialsteacher.com/csharp/csharp-delegate

Во. Вот это меня интересует: MyDelegate del = MethodA;

Если я два делегейта сделаю

MyDelegate del1 = MethodA;

MyDelegate del2 = MethodA;

del1 будет равен del2? del1 == del2, или del1.Equals(del2)?

AlexNek патриот10.03.24 20:44
AlexNek
NEW 10.03.24 20:44 
in Antwort alex445 10.03.24 20:30
Так и продолжают клепать свои однотипные делегаты на каждый чих

Я только не понимаю, зачем постоянно проталкивать своё мнение считая его единственно правильным?

Уже ведь давно выяснили, что кто то любит "пользоваться обычными Action и Func." спок

alex445 коренной житель10.03.24 20:59
NEW 10.03.24 20:59 
in Antwort Срыв покровов 10.03.24 20:38, Zuletzt geändert 10.03.24 21:07 (alex445)

Мне можно, т.к. на самом деле я ламер.

Глянул получше - это что-то типа Enumerable? Можно бесконечно цеплять фукнции к последовательностям, которые что-то делают с элементами этих последовательностей?


Просто в Select то же самое - это расширение Enumerable, позволяющее сразу задать несколько действий над элементами последовательности через параметры-делегаты.

AlexNek патриот10.03.24 21:24
AlexNek
NEW 10.03.24 21:24 
in Antwort MrSanders 10.03.24 20:44, Zuletzt geändert 10.03.24 21:29 (AlexNek)
del1 будет равен del2?

Никогда не интересовало, но по идее должны быть равны.

И таки да:

https://dotnetfiddle.net/9qRfq2 интересно еще View IL глянуть


alex445 коренной житель10.03.24 21:46
NEW 10.03.24 21:46 
in Antwort Срыв покровов 10.03.24 20:42
метод andThen из двух делегатов делает новый делегат

Тогда это сишарповский мультикаст делегат.

MrSanders коренной житель11.03.24 07:14
NEW 11.03.24 07:14 
in Antwort AlexNek 10.03.24 21:24

Никогда не интересовало, но по идее должны быть равны. И таки да

Ну вот. Поэтому (для меня) в шарпе делегейты есть, а в яве - нет. Если определять (по-моему неправильно) делегейт как "возможность передать метод как параметр" тогда они есть и в шарпе и в яве. Причём с самой первой версии :)

P.S. Но и тот и другой близко не функциональные языки с выводом типов (type inference) вроде ML или хаскеля.

alex445 коренной житель20.03.24 11:53
NEW 20.03.24 11:53 
in Antwort MrSanders 11.03.24 07:14, Zuletzt geändert 20.03.24 11:58 (alex445)

В Яву потихоньку подвозят Сишарп 5-7-летней давности.


Implicitly Declared Classes and Instance Main Methods (Second Preview) (JEP 463)

Мне ненравится как сделали этот JEP. Есть проблема-многословный синтаксис, лишние абстракции которые как выяснилось не всегда нужны. Что мы сделаем, исправим это в языке? Нет, введем дополнительный граничный случай для начинающих с неявно объявленными классами, которые как потом выснится больше нигде работать небудут.

В Яве через эти внутренние классы вообще все фичи вводят?

Срыв покровов патриот21.03.24 19:03
NEW 21.03.24 19:03 
in Antwort alex445 20.03.24 11:53

большинство примеров это конечно разрыв мозга


оно может не запрещено, то блять зачем, когда можно просто написать total = orders.length();

int total = 0;
for (Order _ : orders) // order is unused
total++;
Срыв покровов патриот21.03.24 19:04
NEW 21.03.24 19:04 
in Antwort Срыв покровов 21.03.24 19:03

а написать q.remove() без присвоения что нельзя?

Queue<Integer> q = ... // x1, y1, z1, x2, y2, z2, ...
while (q.size() >= 3) {
var x = q.remove();
var y = q.remove();
var _ = q.remove();
... new Point(x, y) ...
}
Срыв покровов патриот21.03.24 19:09
NEW 21.03.24 19:09 
in Antwort Срыв покровов 21.03.24 19:04
Напомним, что ранее в Java 11 появилась возможность запускать программы, состоящие из одного файла, без необходимости самостоятельной компиляции (JEP 330):
Революция!
alex445 коренной житель22.03.24 05:33
NEW 22.03.24 05:33 
in Antwort Срыв покровов 21.03.24 19:09, Zuletzt geändert 22.03.24 05:40 (alex445)
AlexNek патриот22.03.24 18:08
AlexNek
NEW 22.03.24 18:08 
in Antwort alex445 22.03.24 05:33

party пора вам делать на вашем острове и на костре Эванса спалить бебе

alex445 коренной житель22.03.24 22:45
NEW 22.03.24 22:45 
in Antwort AlexNek 22.03.24 18:08

Видно, что народ вся эта хитромудрая хрень уже достала. Не сами идеи в принципе, а как их пропихивают без мыла где надо и где не надо. TDD-шная повесточка-с в программировании.

alex445 коренной житель22.03.24 22:54
NEW 22.03.24 22:54 
in Antwort alex445 22.03.24 05:33, Zuletzt geändert 22.03.24 23:01 (alex445)
Новая часть кода сделана по ЧиА, а старая постепенно переносится из дремучего легаси в новую парадигму. Да, получилось много классов, но они маленькие, сконцентрированные на своей задаче, разбитые по слоям. Но в чём проблема?

Проблема в том, что управлять кучей мелкотни, разбросанной по слоям, не особо проще, чем монолитом. Монолит можно весь выбросить и переписать, или хотя бы его большие части. А у мелкотни обвязка по связности между собой зачастую больше самой функциональности, закладываемой в эту мелкотню. Т.е. у нас поддерживающая инфрасруктура больше, чем основное производство. Долго возводим леса, кантуем оснастку вокруг, огораживаем, убивая дни на всё это. А потом приходит Петрович и за одну минуту в нужном месте один раз бьёт кувалдой. После чего всё несколько дней разбираем. Примерная аналогия из строительства.


Вообще, всё это сделано для якобы аджайла и continuous integration. Но зачастую проекты как один раз написаны, так почти без существенных доработок и существуют годами. После чего их в значительной части или полностью переписывают. Раз в 5-10 лет. Получается просто последовательность переписываемых почти-монолитов. И такая модель в некоторых случаях более уместна. Проблема всяких аджайл-фанатиков и прочих солидистов в том, что они пихают своё видение во все щели, даже где оно нафиг не сдалось.


без ЧиА в легаси это большие классы на несколько сотен строк, а в новом коде это много классов до сотни строк каждый

Блин, чел хоть раз открывал исходники больших библиотек? Там некоторые классы на тыщи строк. Вот проще и удобнее в некоторых случаях сделать класс на тыщи строк - его так и делают. А не следуют тупым и слепым догмам "классы должны быть маленькими". В куче связанных мелочей зачастую очень трудно составить весь путь потока информации от скажем нажатия на кнопку до получения результата. Там всё проходит через десять слоёв, 20 классов и пачку конвертаций. Задолбаешься прыгать по этим мелким классам, отслеживая стеки вызовов.

6 7 8 9 10 11 12 13 14 15 16 alle