2015-05-19 18 views
7

Có một số chức năng gạch dưới đôi như __before_compile__ được tự động gọi vào thời gian biên dịch trong Elixir. Tuy nhiên, tôi cũng thấy một số dấu gạch dưới đôi __functions__ dường như được đặt tên mà không có yêu cầu ma thuật. Đối với ví dụ, trong Ecto, các chức năng dưới đây được gọi làChức năng gạch dưới đôi trong Elixir

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

gì đủ điều kiện những __functions__ có, tốt, dấu gạch dưới đôi?

ps: đổi tên thành 'phương thức' thành 'chức năng' sau câu trả lời của jose. Phương thức là một thuật ngữ oop và không phù hợp ở đây.

Trả lời

13

Chức năng điểm kép được sử dụng làm gọi lại (__before_compile__, v.v.) hoặc cho siêu dữ liệu (__info__, v.v.). Mục tiêu là họ không nên gây ô nhiễm API mô-đun của bạn. Ngoài ra các chức năng bắt đầu với dấu gạch dưới không được tự động nhập khẩu (đó là những gì chúng tôi muốn ở đây).

PS: chúng là các hàm, không phải là phương thức. :)

Các vấn đề liên quan