2015-05-19 4 views
7

Есть некоторые функции с двойным подчеркиванием, такие как __before_compile__, которые автоматически вызывают время компиляции в Elixir. Тем не менее, я также вижу несколько двойных подчеркиваний __functions__, которые, кажется, называются без магических требований. Для, например, в Ecto, приведенные ниже функции называютсяФункции двойного подчеркивания в Elixir

Ecto.Schema.__source__(source), 
    Ecto.Schema.__fields__(fields), 
    Ecto.Schema.__assocs__(assocs), 
    Ecto.Schema.__primary_key__(primary_key_field), 

Что квалифицирует эти __functions__ иметь, ну, двойные подчеркивания?

ps: переименован «методы» в «функции» после ответа jose. Метод является исчерпывающим и не подходит здесь.

ответ

13

Функции двойного счета используются как обратные вызовы (__before_compile__ и т. Д.) Или для метаданных (__info__ и т. Д.). Цель состоит в том, что они не должны загрязнять ваш API модуля. Также функции, начинающиеся с подчеркивания, автоматически не импортируются (это то, что мы хотим здесь).

PS: это функции, а не методы. :)

Смежные вопросы