Итак, я пытаюсь вставить компонентную систему для игровых объектов в свои рамки, и я надеялся сохранить все компоненты в одном массиве (или map ... et.), поэтому все они могут быть легко обновлены, а классы не должны использовать предопределенные слоты для компонентов, поэтому я сделал базовый компонентный класс и создал карту компонента типа, а затем имел другие компоненты, которые расширяют базу компонент, который отлично работает, если все, что я хочу сделать, это вызвать метод обновления для всех из них, но я хочу, чтобы все они могли иметь любые методы, которые они хотят. Конечно, это не сработает, потому что компилятор не знает, какой класс может быть для каждого компонента. Затем я обнаружил, что могу применить компонент к своему типу, используя что-то вроде этого (если я знаю его тип): return cast(components.get("transform"), TransformComponent);
, а затем получить доступ к функциям childs. Это хороший способ сделать что-то, или это ужасное дизайнерское решение, и я должен переработать всю структуру компонентов? жаль, если это очень неопытный вопрос, и спасибо, Николитье родительских классов в дочерние классы
(обратите внимание, я использую Haxe, но я считаю, что это относится ко всем языкам OOP)
Потрясающие :) Вот именно то, что я хотел бы знать, и дженерики делает его гораздо чище ... спасибо – Nico
Я думаю, что я посажу обоих этих методов в легкий доступ – Nico
Только так я понимаю это полностью, как работает бросок без второго параметра или указанного типа, например, я мог бы понять: var i: Int = cast myfloat, но как он работает без указания типа? – Nico