Delphi vs C++ vs C#
, ну и Java немножко, где-то ближе к старшему байту номеров страниц
![]() |
Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
|
| ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
| [216.73.216.192] |
|
|
Правила раздела:
| Страницы: (495) « Первая ... 366 367 [368] 369 370 ... 494 495 ( Перейти к последнему сообщению ) |
Delphi vs C++ vs C#
, ну и Java немножко, где-то ближе к старшему байту номеров страниц
|
Сообщ.
#5506
,
|
|
|
|
korvin, это пример чего-то другого.
|
|
Сообщ.
#5507
,
|
|
|
|
а ты не видишь, что нет? =) впрочем, я посмотрел трейты в Racket, там они несколько отличаются от того, что ты мне показал на C++. а так же от тайпклассов. |
|
Сообщ.
#5508
,
|
|
|
|
Цитата korvin @ а ты не видишь, что нет? =) впрочем, я посмотрел трейты в Racket, там они несколько отличаются от того, что ты мне показал на C++. а так же от тайпклассов. С++ отличается как всегда своей терминологией(правда я подозреваю, что данный прием в С++ появился раньше остальных trait'ов). И заметь, в С++ это не языковое средство, а идиома. |
|
Сообщ.
#5509
,
|
|
|
|
Цитата D_KEY @ korvin, это пример чего-то другого. это пример того, что ты мне показывал на С++: Цитата ![]() ![]() struct MyPoint { int x; int y; Color color; }; template<> struct PointTraits<MyPoint> { static int getX(const MyPoint &p) { return p.x; } static int getY(const MyPoint &p) { return p.y; } }; template<> struct ColoredTraits<MyPoint> { static Color getColor(const MyPoint &p) { return p.color; } }; ... ![]() ![]() template<typename T> int f(const T &point) { return PointTraits<T>::getX(point); } Добавлено Цитата D_KEY @ С++ отличается как всегда своей терминологией(правда я подозреваю, что данный прием в С++ появился раньше остальных trait'ов). И заметь, в С++ это не языковое средство, а идиома. в Racket это тоже идиома, но ее можно завернуть (и завернули) в макрос и удобно использовать без кучи синтаксического мусора =) |
|
Сообщ.
#5510
,
|
|
|
|
Вот есть я - обычный тёмный человек, мало что понимающий в программировании и разработки ПО. Вот кто-нибудь, объясните мне: вот эта штука с сильной связью наследованием в языке с одиночным наследованием и переносом всего в run-time и в самом деле является аналогом того, что в C++ называется traits?
|
|
Сообщ.
#5511
,
|
|
|
|
Цитата MyNameIsIgor @ Вот есть я - обычный тёмный человек, мало что понимающий в программировании и разработки ПО. Вот кто-нибудь, объясните мне: вот эта штука с сильной связью наследованием в языке с одиночным наследованием и переносом всего в run-time и в самом деле является аналогом того, что в C++ называется traits? где ты увидел рантайм? напомню, что перегрузка функций разруливается во время компиляции. впрочем это не имеет значения. не знаю как в Scala, но в Racket (и видимо много где еще) трейты -- это примеси, которые могут содержать методы. собственно термин видимо пошел из языка Self, поэтому не думаю, что то, "что в С++ называется traits", где-то используется (если оно отличается от Self'ийских трейтов) |
|
Сообщ.
#5512
,
|
|
|
|
Цитата korvin @ где ты увидел рантайм? напомню, что перегрузка функций разруливается во время компиляции. Ах, да, обознался. Просто я не подумал, что кто-то будет извращаться наследованием, чтобы получить перегруженные методы - ну, программирование не мой конёк. Цитата korvin @ собственно термин видимо пошел из языка Self, поэтому не думаю, что то, "что в С++ называется traits", где-то используется (если оно отличается от Self'ийских трейтов) Можно выразить всем (кроме D) соболезнование... Хотя, наверняка я опять чота нипанимайу... |
|
Сообщ.
#5513
,
|
|
|
|
Цитата korvin @ Цитата D_KEY @ korvin, это пример чего-то другого. это пример того, что ты мне показывал на С++ А т.к. на С++ тебе показали аналог того, что ты показал на Haskell с тайпклассами, то можно сделать вывод, что этот пример на ява является примером тайпклассов? Цитата в Racket это тоже идиома, но ее можно завернуть (и завернули) в макрос и удобно использовать без кучи синтаксического мусора =) Хм. А где в примере на С++ синтаксический мусор? |
|
Сообщ.
#5514
,
|
|
|
|
Цитата MyNameIsIgor @ Ах, да, обознался. Просто я не подумал, что кто-то будет извращаться наследованием, чтобы получить перегруженные методы - ну, программирование не мой конёк. в чем извращение-то? нормальный способ расширения функциональности, хочешь, используешь функции из Bar, хочешь -- из Buz. а как бы ты сделал, если бы тебе Bar.exec(Foo) нужно было бы переопределить? |
|
Сообщ.
#5515
,
|
|
|
|
Цитата korvin @ собственно термин видимо пошел из языка Self, поэтому не думаю, что то, "что в С++ называется traits", где-то используется (если оно отличается от Self'ийских трейтов) То, что используется в С++, называется Traits class и не имеет отношения к ООП(в отличие от trait'ов). Это прием обобщенного программирования. Во многих других языках не используется в виду слабых возможностях по поддержке этого самого обобщенного программирования. В D используется же. |
|
Сообщ.
#5516
,
|
|
|
|
Цитата korvin @ а как бы ты сделал, если бы тебе Bar.exec(Foo) нужно было бы переопределить? Я снова нипанимайу Как мы плавно перешли от перегрузки к переопределению?И да, мне не надо ни то, ни другое. Я думал увидеть на джаве плюсовые traits'ы, потому как мои знания не позволяют мне это сделать... |
|
Сообщ.
#5517
,
|
|
|
|
Цитата D_KEY @ А т.к. на С++ тебе показали аналог того, что ты показал на Haskell с тайпклассами, то можно сделать вывод, что этот пример на ява является примером тайпклассов? нет, нельзя, этот пример повторяет функциональность твоего примера на C++, но не обладает некоторыми свойствами тайпклассов и шаблонов Цитата D_KEY @ Хм. А где в примере на С++ синтаксический мусор? я не говорил, что он там есть. ну так и трейтов там нет, просто перегрузка функций, да шаблоны Добавлено Цитата MyNameIsIgor @ Я снова нипанимайу Как мы плавно перешли от перегрузки к переопределению?И да, мне не надо ни то, ни другое. Я думал увидеть на джаве плюсовые traits'ы, потому как мои знания не позволяют мне это сделать... а чем тебе мой пример не нравится? все то же самое, что и D_KEY показывал, с одной поправкой, впрочем связанной с особенностью дженериков. |
|
Сообщ.
#5518
,
|
|
|
|
Цитата korvin @ Цитата D_KEY @ А т.к. на С++ тебе показали аналог того, что ты показал на Haskell с тайпклассами, то можно сделать вывод, что этот пример на ява является примером тайпклассов? нет, нельзя, этот пример повторяет функциональность твоего примера на C++, но не обладает некоторыми свойствами тайпклассов и шаблонов Это не мой пример, а твой пример на тайпклассы. Мой код на С++ полностью повторяет функциональность твоего на Haskell, твой на Яве полностью повторяет мой на С++, следовательно, твой на Яве полностью повторяет функциональность твоего же примера на Haskell. Или тут какая-то своя логика должна быть задействована ? |
|
Сообщ.
#5519
,
|
|
|
|
Цитата D_KEY @ То, что используется в С++, называется Traits class и не имеет отношения к ООП(в отличие от trait'ов). Это прием обобщенного программирования. Во многих других языках не используется в виду слабых возможностях по поддержке этого самого обобщенного программирования. В D используется же. уу... и только-то. но я бы сказал "в других языках не используется в виду отсутсвия необходимости" =) |
|
Сообщ.
#5520
,
|
|
|
|
Цитата korvin @ ну так и трейтов там нет, просто перегрузка функций, да шаблоны Там показан прием на использования классов-характеристик, который в С++ иногда сокращенно называют просто traits, а не traits class. С чего ты решил приплести сюда ОО-trait'ы мне не понятно. |