【问题标题】:Double underscore functions in ElixirElixir 中的双下划线函数
【发布时间】:2017-04-06 00:49:18
【问题描述】:

有一些像__before_compile__ 这样的双下划线函数会在 Elixir 的编译时自动调用。但是,我也看到一些双下划线__functions__ 似乎没有神奇的要求。例如,在 Ecto 中,调用以下函数

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

什么使这些__functions__ 有双下划线?

ps:在 jose 的回答之后将“方法”重命名为“功能”。 Method是一个oop术语,在这里不合适。

【问题讨论】:

    标签: elixir


    【解决方案1】:

    双分函数用作回调(__before_compile__ 等)或元数据(__info__ 等)。目标是它们不应该污染您的模块 API。下划线开头的函数也不会自动导入(这是我们想要的)。

    PS:它们是函数,而不是方法。 :)

    【讨论】:

      最近更新 更多