Tôi đang cố gắng tìm hiểu các mô-đun trong Elixir. Bởi vì trong Erlang chúng chỉ là nguyên tử, nhưng trong các nguyên tử Elixir bắt đầu với ký tự :
. Vì vậy, tôi đã kiểm tra các biểu thức trong IEX:Mô-đun Elixir là một nguyên tử?
iex(16)> is_atom(List)
true
iex(17)> is_atom(:List)
true
iex(18)> List == :List
false
iex(19)> a = List
List
iex(20)> b = :List
:List
Vì vậy, nó là khá rõ ràng rằng cả hai List
và :List
là nguyên tử. Tuy nhiên, nó hoạt động như thế nào trên lớp Erlang interop? Bởi vì ok
của Erlang bằng Elixir's :ok
.
Vậy một trong hai (List
và :List
) này bằng 'List'
trong Erlang?
Câu trả lời hay! Để chính xác 100% trong việc đặt tên, 'List',' String' trong Elixir được gọi là bí danh và chúng mở rộng thành các nguyên tử. Vì vậy, 'List' mở rộng đến:" Elixir.List ". Tuy nhiên, bạn có thể tạo một điểm bí danh cho bất kỳ điều gì bạn muốn bằng cách sử dụng biểu mẫu đặc biệt 'alias', ví dụ:' alias: foo, as: List'. –
@ JoséValim Làm thế nào tôi có thể đạt được bí danh như vậy từ chuỗi hơn? 'String.to_atom (" Danh sách ")' cho ': Danh sách'. Tôi sử dụng '{atom, _} = Code.eval_string (" List ")' Nhưng tôi tưởng tượng nó không phải là cách an toàn nhất để làm điều đó –
Kiểm tra 'Module.concat/2' và' Module.split/1'. –