有一些双下划线函数__before_compile__,在Elixir中编译时自动调用.但是,我也看到了许多双下划线__functions__,似乎没有神奇的要求.例如,在Ecto中,调用以下函数
Ecto.Schema.__source__(source),
Ecto.Schema.__fields__(fields),
Ecto.Schema.__assocs__(assocs),
Ecto.Schema.__primary_key__(primary_key_field),
Run Code Online (Sandbox Code Playgroud)
什么是合格的__functions__,有双重下划线?
ps:在jose的回答之后将'methods'重命名为'functions'.方法是一个oop术语,在这里不合适.
Jos*_*lim 15
双得分函数用作回调(__before_compile__等)或元数据(__info__等).目标是他们不应该污染您的模块API.也不会自动导入以下划线开头的函数(这是我们想要的).
PS:它们是功能,而不是方法.:)