以下代碼是否等效?作爲調用模塊的方法,在這兩種情況下,人會用Utilities.StringUtils.some_method(...)
Elixir:帶點和嵌套模塊的模塊名稱 - 它們是否相等?
嵌套模塊
defmodule Utilities do
defmodule StringUtils do
end
end
模塊與點的名稱
defmodule Utilities.StringUtils do
end
以下代碼是否等效?作爲調用模塊的方法,在這兩種情況下,人會用Utilities.StringUtils.some_method(...)
Elixir:帶點和嵌套模塊的模塊名稱 - 它們是否相等?
嵌套模塊
defmodule Utilities do
defmodule StringUtils do
end
end
模塊與點的名稱
defmodule Utilities.StringUtils do
end
是和否。的第一個定義自動定義基於模塊名稱的別名:
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
其他,通過兩者定義的代碼和模塊是完全一樣的。
是,兩者都精確地轉換爲符號(在Erlang一個模塊被它的符號引用):
:"Elixir.Utilities.StringUtils"
在Erlang中沒有真正嵌套的模塊,它只是Elixir模擬的東西。
感謝您的回答 - 我想您的意思是「Atom」,當您提到'符號' –