Size: a a a

Programming Offtop

2021 March 16

(

( in Programming Offtop
В моем случае и обычный подход, заложенный библиотекой, будет работать, пока не перестанет
источник

AN

Alexander Nozik in Programming Offtop
(
val (fc: ForcesComponent, bc: BodyComponent, ac: AerialComponent) = entity
А чем оно кстати лучше чем
val fc: ForcesComponent = entity.gm()
просто экономия строк?
источник

(

( in Programming Offtop
Да
источник

OY

Oleg Yukhnevich in Programming Offtop
Alexander Nozik
А чем оно кстати лучше чем
val fc: ForcesComponent = entity.gm()
просто экономия строк?
Такой подход удобен ещё с функциями, которые принимают лямбду (Entity) -> ...
Можно сразу разложить
И да, это просто экономия строк, в некоторых случаях это прям удобно
источник

AN

Alexander Nozik in Programming Offtop
Oleg Yukhnevich
Такой подход удобен ещё с функциями, которые принимают лямбду (Entity) -> ...
Можно сразу разложить
И да, это просто экономия строк, в некоторых случаях это прям удобно
Ну если есть гарантия того, что типы там уникальные и нет коллизий, то почему бы и нет. Правда от проблемы "порефаеторил - оно тихо сломалось" не спасает
источник

AN

Alexander Nozik in Programming Offtop
Разумеется, если там не дата класс а динамичеческая структура, там ничего не спасет
источник

OY

Oleg Yukhnevich in Programming Offtop
Alexander Nozik
Ну если есть гарантия того, что типы там уникальные и нет коллизий, то почему бы и нет. Правда от проблемы "порефаеторил - оно тихо сломалось" не спасает
А почему рефакторинг сломает, если там эти компоненты по типу находятся?
источник

AN

Alexander Nozik in Programming Offtop
Oleg Yukhnevich
А почему рефакторинг сломает, если там эти компоненты по типу находятся?
Потому что они в рантайме по типу находятся. Но судя по Entity, оно там и так динамическое
источник

(

( in Programming Offtop
Единственная проблема, которую я пока чувствую, это то, что интеллисенс, когда дополняет тип в деструктуризации, ставит fully qualified имя
источник

(

( in Programming Offtop
Хотя никаких причин так себя вести у него нет
источник

(

( in Programming Offtop
Alexander Nozik
Потому что они в рантайме по типу находятся. Но судя по Entity, оно там и так динамическое
Ой, а угадайте, как здесь присунуть хлисты
источник

AN

Alexander Nozik in Programming Offtop
(
Ой, а угадайте, как здесь присунуть хлисты
Никак. Если оно динамическое.
источник

Kd

Konstantin dmz9 in Programming Offtop
(
Да
а мог бы просто взять жсик и экономить еще и буквы в обьявлении типов
источник

(

( in Programming Offtop
Alexander Nozik
Никак. Если оно динамическое.
Это, разумеется, неправда.
Entity можно получить, например, вот так:

entities = engine.getFor(family)

Где family - это перечисление типов компонентов, которые должны быть у всех искомых Entity.
И если бы были хлисты и тайп-фемели (любые тайплевел лямбды, на самом деле) и Entity имели женерик, чтобы протегать их компонентами, которые у них есть, то могло бы быть вот так:

val entities: List<Entity<BodyComponent :: PositionComponent>> = engine.getFor(Family.all(BodyComponent::class.java, PositionComponent::class.java).get())

И вы бы получали тайпсейфное доставание компонентов и все такое. Но чего нет, того нет
источник

(

( in Programming Offtop
@ankorotkikh your next line is "надо фичи ебашить, а не на типы дрочить"
источник

AN

Alexander Nozik in Programming Offtop
(
Это, разумеется, неправда.
Entity можно получить, например, вот так:

entities = engine.getFor(family)

Где family - это перечисление типов компонентов, которые должны быть у всех искомых Entity.
И если бы были хлисты и тайп-фемели (любые тайплевел лямбды, на самом деле) и Entity имели женерик, чтобы протегать их компонентами, которые у них есть, то могло бы быть вот так:

val entities: List<Entity<BodyComponent :: PositionComponent>> = engine.getFor(Family.all(BodyComponent::class.java, PositionComponent::class.java).get())

И вы бы получали тайпсейфное доставание компонентов и все такое. Но чего нет, того нет
Можно. но это вроде очень легко эмулируется. Просто делаешь дата класс с доп. методом, который дифференцирует загружаемые поля
источник

Kd

Konstantin dmz9 in Programming Offtop
а если серьезно - разве ошибка приведения типов самая распространенная среди всех ошибок программирования?
источник

Kd

Konstantin dmz9 in Programming Offtop
так прям по этим типам упарываются как будто это сразу сделает программу рабочей
источник

(

( in Programming Offtop
Konstantin dmz9
а если серьезно - разве ошибка приведения типов самая распространенная среди всех ошибок программирования?
Тут не в этом проблема, а в том, что можно попробовать из ентити достать компонент, которого там нет
источник

(

( in Programming Offtop
Будет краш
источник