сделать такое:
defimpl A, for: Map do
def parse(%{__tag__: smth}) do
struct(???)
end
def parse (%{} = map), do: map
end
да, это в общем оно. упрощая, вопрос в том, откуда брать аргумент для struct. на деле там конечно еще добавление runtime-only полей, апгрейды старых версий, etc.
ну ты выше вроде писал что из тег и берется, не?
да, и в тег вообще можно просто атом модуля структуры положить, но хочется дополнительный indirection, чтобы в случае чего код рефакторить нормально. на этом моменте возникает табличка tag -> module. вообще, ее легко собрать с consolidated протокола, и положить в кэш, чтобы не делать лишних телодвижений. вопрос начался с того, как этот кэш в режиме разработки обновлять.
Обсуждают сегодня