Size: a a a

Programming Offtop

2021 March 16

AN

Alexander Nozik in Programming Offtop
(
Будет краш
Так в любом случае будет, если твой family определяется динамически. А даже если статически, то будет краш на той функции, которую ты описал
источник

Kd

Konstantin dmz9 in Programming Offtop
(
Будет краш
так контролируй его
источник

Kd

Konstantin dmz9 in Programming Offtop
кидай сам
отдай нул
отдай нул обжект
отдай езер
источник

AN

Alexander Nozik in Programming Offtop
Суть в том, что все эти тайп-сейф-фичи хороши, когда программа вся с начала и до конца в закрытом мире, а тут явно не тот случая
источник

(

( in Programming Offtop
Alexander Nozik
Так в любом случае будет, если твой family определяется динамически. А даже если статически, то будет краш на той функции, которую ты описал
Все фемили, которые я пишу, известны статически, соответственно, во всех местах, где я ентити достаю из енжина по фемили, это можно сделать тайпсейфно.
Единственное место, где фемели не известны статически, это там, где их создание не компилируется - в луа скриптах
И вытаскивание можно закодить так, чтобы компилятор ругался, если я вытаскиваю компонент, которого там нет
источник

(

( in Programming Offtop
Я могу пример на х-ле написать, если кто-нибудь его поймет
источник

AN

Alexander Nozik in Programming Offtop
(
Все фемили, которые я пишу, известны статически, соответственно, во всех местах, где я ентити достаю из енжина по фемили, это можно сделать тайпсейфно.
Единственное место, где фемели не известны статически, это там, где их создание не компилируется - в луа скриптах
И вытаскивание можно закодить так, чтобы компилятор ругался, если я вытаскиваю компонент, которого там нет
Да все тут понятно. Но entities = engine.getFor(family) все равно упадет в рантайме если нет соответствия. Другое дело, что оно упадет рано - это хорошо.
источник

(

( in Programming Offtop
Alexander Nozik
Да все тут понятно. Но entities = engine.getFor(family) все равно упадет в рантайме если нет соответствия. Другое дело, что оно упадет рано - это хорошо.
Что значит нет соответствия? Если в енжине нет ентити для переданной фемили, то вернется пустой лист
источник

AN

Alexander Nozik in Programming Offtop
(
Что значит нет соответствия? Если в енжине нет ентити для переданной фемили, то вернется пустой лист
А чем это спасает и от чего?
источник

(

( in Programming Offtop
Alexander Nozik
А чем это спасает и от чего?
Кто от чего спасает? Что пустой лист будет?
источник

AN

Alexander Nozik in Programming Offtop
(
Кто от чего спасает? Что пустой лист будет?
Ну чем это лучше того, что потом проверка будет
источник

(

( in Programming Offtop
Alexander Nozik
Ну чем это лучше того, что потом проверка будет
Я потерял мысль. Проверка чего?
источник

AN

Alexander Nozik in Programming Offtop
Ты говоришь, что твои любимые хлисты спасут от крэша. Чем они спасают, если что там, что там может быть missing element. Ты его что там, что там можешь обработать без крэша
источник

VP

Vladimir Petrakovich in Programming Offtop
Konstantin dmz9
а если серьезно - разве ошибка приведения типов самая распространенная среди всех ошибок программирования?
Вся суть в том, чтобы логические ошибки превратить в ошибки приведения типов. Тогда их сразу видно, и ловить проще.
источник

(

( in Programming Offtop
Alexander Nozik
Ты говоришь, что твои любимые хлисты спасут от крэша. Чем они спасают, если что там, что там может быть missing element. Ты его что там, что там можешь обработать без крэша
Так я же и говорю, что функцию для доставания компонента по типу можно сделать некомпилируемой, если она вызывается на ентити, у которой статически известно, какие компоненты там есть
источник

AN

Alexander Nozik in Programming Offtop
Vladimir Petrakovich
Вся суть в том, чтобы логические ошибки превратить в ошибки приведения типов. Тогда их сразу видно, и ловить проще.
Так тут нет поведения типов. Есть динамический разбор структуры
источник

(

( in Programming Offtop
Опять же, при условии, что у вас в языке есть тайп фемели
источник

ML

Mikhail Levchenko in Programming Offtop
Alexander Nozik
А наследование?
ECS же как раз анти-наследование
источник

AN

Alexander Nozik in Programming Offtop
(
Так я же и говорю, что функцию для доставания компонента по типу можно сделать некомпилируемой, если она вызывается на ентити, у которой статически известно, какие компоненты там есть
Я тебе не про это. А про то, что когда ты саму entity собираешь, у тебя уже может быть фейл. А дальше вопрос в том, насколько разнообразные entity тебе нужны. Сколько у тебя их варианто?
источник

AN

Alexander Nozik in Programming Offtop
Mikhail Levchenko
ECS же как раз анти-наследование
Речь была про наследование в типах параметров
источник