2015-08-30 9 views
10

कोड नीचे बराबर हैं? एक मॉड्यूल विधि आह्वान करने के लिए के रूप में, दोनों ही मामलों में, एक बिंदु के साथ Utilities.StringUtils.some_method(...)इलीक्सिर: डॉट और नेस्टेड मॉड्यूल के साथ मॉड्यूल नाम - क्या वे बराबर हैं?

नेस्टेड मॉड्यूल

defmodule Utilities do 
    defmodule StringUtils do 
    end 
end 

मॉड्यूल नाम का उपयोग करेगा

defmodule Utilities.StringUtils do 
end 

उत्तर

20

हां और नहीं।

defmodule Utilities do 
    defmodule StringUtils do 
    end 

    # Can access the module as StringUtils 
end 

जबकि दूसरा: पहली परिभाषा स्वचालित रूप से एक उपनाम मॉड्यूल नाम के आधार पर परिभाषित करता है

defmodule Utilities.StringUtils do 
    # Cannot access the module as StringUtils 
end 

उसके अलावा, कोड और मॉड्यूल दोनों द्वारा परिभाषित बिल्कुल वैसा ही कर रहे हैं।

3

हाँ, दोनों प्रतीक वास्तव में अनुवाद किया जाता है (एरलांग में एक मॉड्यूल को इसके प्रतीक द्वारा संदर्भित किया जाता है):

:"Elixir.Utilities.StringUtils"

एरलांग में वास्तव में घोंसला वाले मॉड्यूल नहीं हैं, यह कुछ इलीक्सिर सिमुलेट है।

+3

उत्तर के लिए धन्यवाद - मुझे लगता है कि आपका मतलब 'एटम' था, जब आपने 'सिंबल' –

संबंधित मुद्दे