Size: a a a

2021 January 13

O

Oleg in dlang.ru
ок.. вернемся взад: с какой проблемой мы столкнулись, решив переопределять шаблонные методы, но этого делать низя, потому мы переопределили сериализаторы?
честногря, я даже не знаю с какой целью интересуюсь, потому что башка и так на работе забилась, а ее еще туда чтото пропихиваю.. может, думаю, клин клином..
источник

OB

Oleg B in dlang.ru
Oleg
ок.. вернемся взад: с какой проблемой мы столкнулись, решив переопределять шаблонные методы, но этого делать низя, потому мы переопределили сериализаторы?
честногря, я даже не знаю с какой целью интересуюсь, потому что башка и так на работе забилась, а ее еще туда чтото пропихиваю.. может, думаю, клин клином..
вообще вопрос был изначально про "почему нельзя переопределять шаблонные методы в классах"
ответ: потому что это влечёт за собой лавинообразное раздувание бинарника

зачем может быть нужно переопределять шаблонный метод? например в задаче где хочется подменять поведение шаблонного метода в runtime
источник

O

Oleg in dlang.ru
ааа, теперь вроде доперло
источник

N

NC in dlang.ru
Oleg B
а без ООП как такое делать?
Без ООП это делается через duck typing и избегание диспетчеризации в рантайме. Она нужна в крайне редких случаях.
источник

OB

Oleg B in dlang.ru
NC
Без ООП это делается через duck typing и избегание диспетчеризации в рантайме. Она нужна в крайне редких случаях.
в любом случае ducktype тоже оперирует объектами
источник

OB

Oleg B in dlang.ru
а как избежать диспечеризации в рт при подмене проведения в рт я не пойму
источник

OB

Oleg B in dlang.ru
если заполнить делегаты нужными функциями, то в любом случае их разыменовывание будет некоторой диспечеризацией
источник

DH

Dark Hole in dlang.ru
Oleg B
в моей конкретной задаче некий объект пишет данные (не логи, а целевые данные) в один сериализатор (журнал csv), а в случае запроса из вэба в другой (json)
Теоретически они могли бы эти данные возвращать, а код уже сам их мог решить как сериализировать
источник

OB

Oleg B in dlang.ru
можно уйти от ООП в виде классов и интерфейсов и прийти к кастрированному ООП на структурах и делегатах
источник

OB

Oleg B in dlang.ru
Dark Hole
Теоретически они могли бы эти данные возвращать, а код уже сам их мог решить как сериализировать
для этого 'коду' нужно знать тип
источник

OB

Oleg B in dlang.ru
в любом случае нет возможности в D в рт оперировать шаблонными функциями, они где-то должны инстанцироваться
источник

OB

Oleg B in dlang.ru
Dark Hole
Теоретически они могли бы эти данные возвращать, а код уже сам их мог решить как сериализировать
даже если функция печати будет шаблонной, как её передать без инстацирования, как её подменить после инстацирования
источник

0

000Sanya in dlang.ru
Oleg B
в любом случае нет возможности в D в рт оперировать шаблонными функциями, они где-то должны инстанцироваться
это логично
источник

OB

Oleg B in dlang.ru
Oleg B
даже если функция печати будет шаблонной, как её передать без инстацирования, как её подменить после инстацирования
можно только типы наружу выдернуть и снаружи инстацировать
источник

OB

Oleg B in dlang.ru
что делать не хочется
источник

OB

Oleg B in dlang.ru
000Sanya
это логично
некоторые языки позволяют вроде
источник

0

000Sanya in dlang.ru
Oleg B
некоторые языки позволяют вроде
которые jit
источник

O

Oleg in dlang.ru
итак, у нас есть объект, который формирует структуру данных {BeginScope, IntValue, StringValue, EndScope}
1. этот объект получает ISerializator { beginScope... } и сам дерагает его методы.
тогда все сериализаторы наследуются от этого интерфейса
2. любой независимый сериализатор может опрашивать Формирователь (знает его АПИ) и пихать данные как хочет. сериализаторы ваще не связаны какими либо зависимостями или интерфейсами
источник

OB

Oleg B in dlang.ru
Oleg B
некоторые языки позволяют вроде
храниться некий jit, а он уже в рт приводится к типу
источник

OB

Oleg B in dlang.ru
000Sanya
которые jit
ну да
источник