9
Elixir'de hangi modüllerin bulunduğunu anlamaya çalışıyorum. Çünkü Erlang'da sadece atomlar, ama Elixir atomlarında :
karakteriyle başlar. Yani IEX içinde bu ifadeleri kontrol ettim:Elixir'in modülü bir atom mu?
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
yüzden List
ve :List
hem atomlar olduğu çok açık. Ancak, Erlang interop katmanında nasıl çalışır? Çünkü Erlang'ın ok
Elixir'in :ok
'a eşittir.
Bu iki (List
ve :List
) hangisi Erlang'da 'List'
'a eşittir? Iksir içinde
Harika cevap! İsimlendirmede% 100 kesin olmak gerekirse, Elixir'de 'List'''' String' takma ad olarak adlandırılır ve atomlara genişler. Bu yüzden 'List '," Elixir.List "e genişler. Ancak, 'alias' özel formunu kullanarak istediğiniz bir takma ad oluşturabilirsiniz, örneğin: alias: foo, as: List'. –
@ JoséValim Diziden böyle takma adları nasıl elde edebilirim? 'String.to_atom (" List ")' 'List' verir. Ben {atom, _} = Code.eval_string ("List") kullanıyorum 'Ama bunu yapmanın en güvenli yolu olmadığını hayal ediyorum –
' Module.concat/2' ve 'Module.split/1' kontrol edin. –