Re[7]: проектирование
От: dmz Россия  
Дата: 20.07.17 13:22
Оценка:
dmz>>История про пушку выглядит надуманной.

F>вот сейчас было обидно ._.



Нет, ну правда — отрисовка двухствольной пушки как-то отличается
от одноствольной? Казалось бы, и то, и другое — либо спрайт, либо
векторная модель в том или ином виде.

Просто постановка до боли напомнила замшелые задачки для собеседований — типа кто от
кого наследует — квадрат от прямоугольника или наоборот. Или построить иерархию
наследования для геометрических фигур.


Определение похожего поведения для разных типов обычно решается
тайпклассами или явной диспетчеризацией (PM) или совмещением
обоих подходов.

Может, лучше какие-то кейсы привести? Так-то:

class Drawable a where
   draw :: Canvas -> a -> Canvas

data GunOneBarrel = GunOneBarrel GunAttributes

instance Drawable GunOneBarrel where
  draw _ (GunOneBarrel{..}) = undefined

data GunTwoBarrels = GunTwoBarrels GunAttributes

instance Drawable GunTwoBarrels where
  draw _ (GunTwoBarrels{..}) = undefined
Отредактировано 20.07.2017 13:27 dmz . Предыдущая версия . Еще …
Отредактировано 20.07.2017 13:27 dmz . Предыдущая версия .
Отредактировано 20.07.2017 13:26 dmz . Предыдущая версия .
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.