Delphi vs C++ vs C#
, ну и Java немножко, где-то ближе к старшему байту номеров страниц
![]() |
Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
|
| ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
| [216.73.216.192] |
|
|
Правила раздела:
| Страницы: (495) « Первая ... 369 370 [371] 372 373 ... 494 495 ( Перейти к последнему сообщению ) |
Delphi vs C++ vs C#
, ну и Java немножко, где-то ближе к старшему байту номеров страниц
|
Сообщ.
#5551
,
|
|
|
|
Это, опять же, скорее аналог плюсовой перегрузки. Правда им можно будет воспользоваться в рантайме через интерфейсы... Как на счет типов? Цитата CL: ![]() ![]() (defmethod property ((i integer)) (case i (0 "zero") ... (else "very big number"))) в Ruby и Kotlin тоже можно, в Objective-C вроде можно через протоколы Это уже добавление методов. Ты точно статью читал ?Перепиши примеры оттуда. Добавлено Цитата korvin @ Цитата D_KEY @ Да, а вместо виртуальных функций можно добавлять в объект указатель на таблицу с указателями на функции. Очень удобно ![]() в объект-то зачем? если мы говорим о статически-типизированных языках, то эту таблицу можно добавить в тип. в динамически типизированных да, необходимо в объекте иметь метку типа, ну так она в любом случае там есть, в чем проблема? дополнительную информацию при этом можно хранить где угодно Ты совсем не следишь за нитью разговора? Использовать все это вручную гораздо геморойнее, чем использовать готовые средства, предоставляемые языком/пакетом макросов. |
|
Сообщ.
#5552
,
|
|
|
|
|
Сообщ.
#5553
,
|
|
|
|
Цитата korvin @ так справляются или нет? Создатели Nemerle посчитали, что нет. Разработчики Scala, желающие добавить макросы, так же считают, что они ортогональны обобщениям. |
|
Сообщ.
#5554
,
|
|
|
|
Хуже. Цитата Вот тут ![]() ![]() instance Property Int where ... Ты задаешь информацию о том, как Int предоставляет то, что обещает Property. |
|
Сообщ.
#5555
,
|
|
|
|
Цитата D_KEY @ Ты совсем не следишь за нитью разговора? Использовать все это вручную гораздо геморойнее, чем использовать готовые средства, предоставляемые языком/пакетом макросов. ты точно ничего не упустил из того, что я написал? про то, как в Racket сделали трейты (другие, ООПшные) вручную и обернув это в один простой макрос предоставили простую и удобную абстракцию Добавлено Цитата D_KEY @ Хуже. в чем хужесть? Цитата D_KEY @ Вот тут ![]() ![]() instance Property Int where ... Ты задаешь информацию о том, как Int предоставляет то, что обещает Property. оу, ну ок. никогда не воспринимал перегрузку как "работу с типами" |
|
Сообщ.
#5556
,
|
|
|
|
Цитата korvin @ Цитата D_KEY @ Ты совсем не следишь за нитью разговора? Использовать все это вручную гораздо геморойнее, чем использовать готовые средства, предоставляемые языком/пакетом макросов. ты точно ничего не упустил из того, что я написал? про то, как в Racket сделали трейты (другие, ООПшные) вручную и обернув это в один простой макрос предоставили простую и удобную абстракцию И причем тут это? Цитата Цитата D_KEY @ Хуже. в чем хужесть? А ты покажи обобщенный код с парой специализаций для конкретных типов на макросах. И мы сравним. Цитата Цитата D_KEY @ Вот тут ![]() ![]() instance Property Int where ... Ты задаешь информацию о том, как Int предоставляет то, что обещает Property. оу, ну ок. никогда не воспринимал перегрузку как "работу с типами" А где ты видишь перегрузку? |
|
Сообщ.
#5557
,
|
|
|
|
Цитата D_KEY @ Ты точно статью читал ?Перепиши примеры оттуда. примеры чего? примеры того, как чел борется с невыразительностью плюсов? я не очень-то понял, что именно он там пытается сделать (я не в смысле "как" -- самих трейтов, это видно, а всмысле "что"), ну да ладно. на каком языке хочешь? |
|
Сообщ.
#5558
,
|
|
|
|
Цитата korvin @ примеры чего? примеры того, как чел борется с невыразительностью плюсов? Интересно, почему полностью аналогичные(в данном случае) type class'ы не вызывают у тебя такой реакции ?Цитата я не очень-то понял, что именно он там пытается сделать (я не в смысле "как" -- самих трейтов, это видно, а всмысле "что"), ну да ладно. на каком языке хочешь? Можешь продолжить на Java, раз уже приводил примеры на нем. Да и понятны они будут всем присутствующим. На Haskell тоже можешь |
|
Сообщ.
#5559
,
|
|
|
|
Цитата D_KEY @ И причем тут это? при том, что макросы избавляют от ручной работы. Цитата D_KEY @ А где ты видишь перегрузку? прям здесь и вижу. а что это по-твоему? это и есть перегрузка -- вид специального полиморфизма |
|
Сообщ.
#5560
,
|
|
|
|
Цитата korvin @ Ну я ж явно написалНу, могу перефразировать при чем тут наследование? в нормальных языках методы отделены от типа и/или их свободно можно добавлять когда нужно Добавлено Вообще, главное было мною сказано в конце: Цитата Qraizer @ свойства - это политика поведения, и она просто должна быть отделена от сушности, чьи свойства она описывает. |
|
Сообщ.
#5561
,
|
|
|
|
Цитата korvin @ Цитата D_KEY @ И причем тут это? при том, что макросы избавляют от ручной работы. Капитанствуешь? Цитата прям здесь и вижу. а что это по-твоему? это и есть перегрузка -- вид специального полиморфизма Я вижу "реализацию"/"специализацию". Ибо перегрузка подразумевает наличие что-то, что мы перегружаем. А там только интерфейс. Как-то так. |
|
Сообщ.
#5562
,
|
|
|
|
Цитата D_KEY @ Я вижу "реализацию"/"специализацию". Ибо перегрузка подразумевает наличие что-то, что мы перегружаем. А там только интерфейс. Как-то так. https://scs.senecac.on.ca/~btp200/pages/content/adhoc.html#his Цитата Overloading is a syntactic abbreviation that associates one function name with a variety of function definitions. The same name can accepts a variety of unrelated sets of types as its arguments. No common ground has to exist amongst the definitions. Uniformity is a coincidence rather than a rule. The definitions contain distinct and possibly totally unrelated logic. Each definition works only on its set of types. The number of sets is limited by the number of definitions that we provide. overloading is not (only) overriding |
|
Сообщ.
#5563
,
|
|
|
|
Цитата korvin @ Цитата D_KEY @ Я вижу "реализацию"/"специализацию". Ибо перегрузка подразумевает наличие что-то, что мы перегружаем. А там только интерфейс. Как-то так. https://scs.senecac.on.ca/~btp200/pages/content/adhoc.html#his Цитата Overloading is a syntactic abbreviation that associates one function name with a variety of function definitions. The same name can accepts a variety of unrelated sets of types as its arguments. No common ground has to exist amongst the definitions. Uniformity is a coincidence rather than a rule. The definitions contain distinct and possibly totally unrelated logic. Each definition works only on its set of types. The number of sets is limited by the number of definitions that we provide. overloading is not (only) overriding Ну так где ты в своем коде увидел: Цитата Overloading is a syntactic abbreviation that associates one function name with a variety of function definitions. The same name can accepts a variety of unrelated sets of types as its arguments. |
|
Сообщ.
#5564
,
|
|
|
|
Цитата D_KEY @ Ну так где ты в своем коде увидел: Цитата Overloading is a syntactic abbreviation that associates one function name with a variety of function definitions. The same name can accepts a variety of unrelated sets of types as its arguments. ![]() ![]() class Property a wnere property :: a -> String сделав функцию классовой, я ассоциировал ее имя с различными определениями |
|
Сообщ.
#5565
,
|
|
|
|
Цитата korvin @ ![]() ![]() class Property a wnere property :: a -> String сделав функцию классовой, я ассоциировал ее имя с различными определениями Нет, ты всего-лишь описал некий контракт А специализация(инстанс) позволяет указать реализацию этого самого контракта. В случае traits class мы имеем контракт не самого типа, а некоторый дополнительный контракт для него(типа) |