Deutsch

C# - pattern matching - many discards

9378   6 7 8 9 10 11 12 13 14 15 16 все
alex445 коренной житель07.03.24 08:13
NEW 07.03.24 08:13 
в ответ Срыв покровов 07.03.24 06:41, Последний раз изменено 07.03.24 08:25 (alex445)
Я на русском программирование не учил, делегаты это все что Func<…> и Action<…>?

Оно и на английском делегаты - delegates. ))


Делегаты это делегаты. Func и Action это готовые определённые типы делегатов, которые широко используются внутри Дотнет фреймворка. Ну и их можно использовать, чтобы не писать велосипеды - в конце-концов, для всех методов с одним входных параметром и без возврата достаточно типа Action<T>. Но судя по коду, что я встречаю, почти все пишут свои определения для банальных делегатов. Вобщем, народ букварей не читает, чего во фреймворке есть не отдупляет, но на собесах по бумажкам какую-то заумь спрашивает. ))

alex445 коренной житель07.03.24 08:23
NEW 07.03.24 08:23 
в ответ Программист 07.03.24 08:04
Надо такой вопрос на собесах задавать, когда хочешь кого-то завалить.

Если кандидат не знает почему для нотификации следует использовать эвенты, а не делегаты, то гнать в шею надо такого кандидата :)

А если программист повсеместно использует делегаты, то надо гнать в шею такого программиста. Все просто.

Я же говорю - передерутся и выгонят друг друга из профессии. И останутся одни со своим говнокодом на проекте, и лишь покладистыми инфантильными подопечными. Не забывая при этом их метелить, какие они говнокодеры и ничего не понимают. А начальству будут втирать, что нет на рынке нормальных, умных, достойных. ))

MrSanders коренной житель07.03.24 09:19
NEW 07.03.24 09:19 
в ответ alex445 06.03.24 21:02
12 год - да наф нам не нужон этот ваш делегат.

На всякий случай, Ололёшеньке всё равно, он у нас дурачок, по-англицки читать это не его, но вдруг кого удивило.

Во-первых, статья 1997-8 года. Не позднее. Java 1.2 не упоминается. Ну, ашипся ололёшенька. Бывает. (Статья про J++. Кто такое мелкомягкое уродство помнит?)

Во-вторых, суть статьи "нафиг усложнять VM ссылками на методы, если есть внутренние классы".

Ну и, в-третьих, ...

14 год - Джава 8 представляет лямбды и ссылки на методы.

"Ссылка на метод" в 8-й Яве это не "delegate". Это синтаксический сахар. Который компилятором преобразуется... во внутренний класс. Как и лямбда.

alex445 коренной житель07.03.24 10:26
NEW 07.03.24 10:26 
в ответ MrSanders 07.03.24 09:19, Последний раз изменено 07.03.24 10:41 (alex445)
Во-первых, статья 1997-8 года. Не позднее. Java 1.2 не упоминается

Согласен, спутал - в 2012 году это было заархивировано, а не выпущено. Но сути это не меняет - до последнего "нам не нужны делегаты", а потом резко "но если очень надо, то вот вам имитирующие костыли".


Так никто и не говорит, что в Джаве есть нормальные делегаты и лямбды. Так, лишь жалкая пародия. Непонятно, зачем их ввели в такую лучшую и совершенную Джаву - наверное, зумеры заколебали - "а вот в Сишарпе и других современных языках...", вот им и бросили кость. А так бы старпёры до сих пор сидели на старых версиях и довольно рыгали бы на форумах - "а нам даже за поддержку старого говна платят больше, чем вам, гы-гы!". Просто Оракл понял, что если сейчас не оторвать свою жопу от насиженного дивана, то Джава окончательно сдохнет вместе со своими старпёрами. Старпёрам может до пенсии бы их зарплат хватило, а вот Ораклу - нет, если он намерен этих старпёров пережить без сокращения бизнеса. По сути, единственная существенная тростинка, на которой она до сих пор держится - Гугл со своим Андроидом. Без него и новых версий Джавы со всем этим сахаром вакухи по Джаве усохли бы в разы.


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

MrSanders коренной житель07.03.24 11:18
NEW 07.03.24 11:18 
в ответ alex445 07.03.24 10:26
Но сути это не меняет - до последнего "нам не нужны делегаты", а потом резко "но если очень надо, то вот вам имитирующие костыли".

Утомил тупостью, чесслово. Ещё раз: в статье было про то, что расширять/усложнять VM поддержкой ссылок на методы НЕ НАДО, потому что то же самое можно делать внутренними классами.

"потом резко, очень надо" - это твоя дурь. Синтаксический сахар добавляется постоянно. То ссылки на методы, то записи.

Всё остальное комментировать не имеет смысла. Ололёшенька в своём репертуаре, брехня.

Срыв покровов патриот07.03.24 14:11
NEW 07.03.24 14:11 
в ответ alex445 07.03.24 08:13
Делегаты это делегаты. Func и Action это готовые определённые типы делегатов, которые широко используются внутри Дотнет фреймворк

ну как я и говорю
delegate void MyMethod(string message) это эквивалент Action<string> MyMethod
или
delegate int MyFunc(string message) это Func<string,int> MyFunc


я бы хотел узнать у староверов, как бы они закодили вот такую хотелку
есть энтити класс Person, хочу функцию, которой я мог бы апдейтить любое свойство объекта Person в базе данных, доступ к объектам по айди

alex445 коренной житель07.03.24 14:23
NEW 07.03.24 14:23 
в ответ MrSanders 07.03.24 11:18

в статье было про то, что расширять/усложнять VM поддержкой ссылок на методы НЕ НАДО, потому что то же самое можно делать внутренними классами.

"потом резко, очень надо" - это твоя дурь. Синтаксический сахар добавляется постоянно. То ссылки на методы, то записи.

Так не надо, что они эти ссылки на методы и лямбды добавляли аж с версии 1.х - сколько там, больше 15 лет прошло? А чего раньше не добавили, раз это всё уже считай было и можно было легко сделать "внутренними классами"? Уверен, не дай им Сишарп и другие современные языки пинка под зад, они бы до сих пор шамкали "не надо, нам и так хорошо!".

alex445 коренной житель07.03.24 14:32
NEW 07.03.24 14:32 
в ответ Программист 06.03.24 16:32, Последний раз изменено 07.03.24 14:50 (alex445)
Гуй. В том числе гуёвые модели в паттернах типа MVVM, MVP, MVC и т.п.
Там используются event'ы. Эвенты используют делегаты, но разница между ними огромна.


Альтернатива какая событиям?
Эвенты используют делегаты, но разница между ними огромна.

Если в 2-х словах:


An Event declaration adds a layer of abstraction and protection on the delegate instance. This protection prevents clients of the delegate from resetting the delegate and its invocation list and only allows adding or removing targets from the invocation list.

Т.е. события основаны на делегатах. Т.е. без делегатов никуда. Ну и чего бухтеть "убил бы, убил бы"?


Что есть в той же Джаве по событиям, на чём они там основаны?

Срыв покровов патриот07.03.24 14:49
NEW 07.03.24 14:49 
в ответ Срыв покровов 07.03.24 14:11

или вот хочу я функцию, чтобы получать коллекцию объектов из БД по заданному фильтру


т.е. в одном месте хочу получить всех персон из города Н
в другом всех котов сиамской породы



как это на староверском изобразить?

alex445 коренной житель07.03.24 14:52
NEW 07.03.24 14:52 
в ответ Срыв покровов 07.03.24 14:49, Последний раз изменено 07.03.24 14:53 (alex445)

Обычные методы с параметрами на каждый подобный чих. Ну и возможность самому ещё расширить это дело. До этих делегатов и лямбд такие методы вроде даже автоматически по шаблонам генерились - к каждому дата сету генерилась пачка методов на несколько тысяч строк в среднем.

Срыв покровов патриот07.03.24 15:14
NEW 07.03.24 15:14 
в ответ alex445 07.03.24 14:52

вот я и хочу от уважаемых господ услышать, действительно ли это то, как они на сегодняшний день разрабатывают п\о

Murr патриот07.03.24 16:06
Murr
NEW 07.03.24 16:06 
в ответ Программист 06.03.24 15:35

Я против делегатов.

----------------

я - ЗА!

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

Murr патриот07.03.24 16:15
Murr
NEW 07.03.24 16:15 
в ответ alex445 06.03.24 16:15

Альтернатива какая событиям?

-----

Альтернатива называется WinProc.

У меня сейчас сильно перегружен лапоть.

А при написании экранной клавы как раз пользовались делегатами.

Результат - нажимаю Шифт, нажимаю букву...буква выводится не в том регистре.

а чтобы было совсем смешно - лечить надо заменой... БП и акку... хаха

Murr патриот07.03.24 16:20
Murr
NEW 07.03.24 16:20 
в ответ AlexNek 06.03.24 17:46

то наверняка найдете более разумное решение.

------

пока функции внтренние - 100%...

alex445 коренной житель07.03.24 17:17
NEW 07.03.24 17:17 
в ответ Murr 07.03.24 16:06, Последний раз изменено 07.03.24 17:19 (alex445)
Но я против того, чтобы делегатам назначались методы самого класса - это способ подключения внешнего решения и пусть таким и остается.

А где вы видели, чтобы делегатам-членам класса назначались методы-члены этого же класса? Какой в этом смысл? Почему бы сами методы не использовать?


Когда я в своём примере использую лямбды в инициализаторе объекта, то это извне класса, объект которого создаю.

AlexNek патриот07.03.24 17:21
AlexNek
NEW 07.03.24 17:21 
в ответ alex445 07.03.24 08:13
Вобщем, народ букварей не читает,

А не кажется что может быть и другое объяснение?

Что лучше понять:Action или RedButtonPressed?

alex445 коренной житель07.03.24 17:24
NEW 07.03.24 17:24 
в ответ AlexNek 07.03.24 17:21, Последний раз изменено 07.03.24 17:24 (alex445)

RedButtonPressed должно стоять в названии экземпляра делегата, а не его типа. Т.е.


Action redButtonPressed


а не


RedButtonPressed redButtonPressed

AlexNek патриот07.03.24 17:29
AlexNek
NEW 07.03.24 17:29 
в ответ Срыв покровов 07.03.24 14:11
есть энтити класс Person, хочу функцию, которой я мог бы апдейтить любое свойство объекта Person в базе данных

пофигу в какую группу попадаю, но такую хотелку просто-бы отмели в зародыше.


AlexNek патриот07.03.24 17:35
AlexNek
NEW 07.03.24 17:35 
в ответ alex445 07.03.24 14:32
Т.е. без делегатов никуда. Ну и чего бухтеть "убил бы, убил бы"?

Да вот по телику показывали даже.

Два мужика выгрузили унитаз из авто и понесли, ... без унитаза то никуда, всем нужен.

Но они понесли его сбрасывать с моста на автобан.

alex445 коренной житель07.03.24 17:47
NEW 07.03.24 17:47 
в ответ AlexNek 07.03.24 17:29
есть энтити класс Person, хочу функцию, которой я мог бы апдейтить любое свойство объекта Person в базе данных

пофигу в какую группу попадаю, но такую хотелку просто-бы отмели в зародыше.

Он намекает на EF с его возможностью повставлять делегаты в функции запросов. Вы сейчас будете отрицать, что используете это? ))

6 7 8 9 10 11 12 13 14 15 16 все