Информация об изменениях

Сообщение Re[9]: проектирование от 20.07.2017 15:57

Изменено 20.07.2017 16:00 dmz

Re[9]: проектирование
.

F>одноствольная состоит из двух спрайтов(башни и ствола), а двуствольная из трёх.

F>при этом при наследовании можно вызвать родительский метод отрисовки и к нему добавить второй ствол.
F>в случае х-я родителя так не вызвать, придётся дублировать код.

В случае хаскеля нет никакого "родителя". Если у нас стоит составная задача отрисовывать
конструкции из нескольких спрайтов, то можно этого достичь примерно 9000 разными способами.

Один из них, например — взять значение, и выдернуть из него все спрайты
которые и отрисовать скопом:

let sprites = [x | x@(Sprite{..}) <- universeBi myMegaWtfObject]
mapM_ (drawSprite ctx) sprites



F>можно завести себе поле "parent" и обращаться к нему, но в случае нескольких уровней потомков нельзя вызвать отрисовку, обратившись прозрачно "насквозь" через несколько родителей.


F>вот вызов методов далёких предков я и ищу.


Алё, тут нету наследования. Какие еще предки. Это же хаскел. И заметим, много где нету,
но ничего, живут как-то. Алсо глубокие наследования вроде бы ```considered harmful```,
и как свидетель системы с глубокими цепочками наследования --- соглашусь.
Re[9]: проектирование
.

F>одноствольная состоит из двух спрайтов(башни и ствола), а двуствольная из трёх.

F>при этом при наследовании можно вызвать родительский метод отрисовки и к нему добавить второй ствол.
F>в случае х-я родителя так не вызвать, придётся дублировать код.

В случае хаскеля нет никакого "родителя". Если у нас стоит задача отрисовывать
конструкции, составленные из нескольких спрайтов, то можно этого достичь примерно
9000 разными способами.

Один из них, например — взять значение, и выдернуть из него все спрайты
которые и отрисовать скопом:

let sprites = [x | x@(Sprite{..}) <- universeBi myMegaWtfObject]
mapM_ (drawSprite ctx) sprites



F>можно завести себе поле "parent" и обращаться к нему, но в случае нескольких уровней потомков нельзя вызвать отрисовку, обратившись прозрачно "насквозь" через несколько родителей.


F>вот вызов методов далёких предков я и ищу.


Алё, тут нету наследования. Какие еще предки. Это же хаскел. И заметим, много где нету,
но ничего, живут как-то. Алсо глубокие наследования вроде бы ```considered harmful```,
и как свидетель системы с глубокими цепочками наследования --- соглашусь.