задать константы только в пределах модуля, из других модулей обратиться не получится
Если сделать через модуль с функциями, типа, def first, do: 1, то для матчинга это не получится использовать
А чего вы хотите этим добиться? Сложить в один модуль маппинг всех констант проекта?
Module.register_attribute(__MODULE__, :my_attr, persist: true) @my_attr :abba Module.get_attribute(__MODULE__, :my_attr)
Нет, не всех, мне надо только у конкретной таблицы сообщений обозначить типы сообщений. И матчить в зависимости от типа Через макросы я сейчас и сделал, но например не могу их использовать в функциях в when
Это работает только в пределах модуля. Ты не понял вопрос похоже
Почему не можешь? Макросы работают и в функциях, и в when
в гардах очень мало чего можно использовать, скорее всего придется написать отдельные гарды
Макросы в гардах работают. А если макрос просто константу задёт, то он точно работает в гарде
А, сейчас проверил, работает. У меня что-то из головы вылетело, где-то не работало
ну я думал там что-то типа рекорда
Ну почему не понял или надо до конца расписать, типа: def attr(name) do __MODULE__.__info__(:attributes) |> Keyword.get(name) |> hd() end
Это работает только в рантайме, и это ещё и самый неэффективный вариант
Обсуждают сегодня