Elixir 模塊嵌套

2023-12-15 14:38 更新

我們已經(jīng)討論過了別名,現(xiàn)在我們可以討論嵌套以及它在Elixir中的運(yùn)作方式.思考下面的例子:

defmodule Foo do
  defmodule Bar do
  end
end

上述例子會定義兩個模塊:FooFoo.Bar.第二個可以被當(dāng)做Bar里的Foo來訪問,只要它們是在同一個語法空間里.上述代碼等同于:

defmodule Elixir.Foo do
  defmodule Elixir.Foo.Bar do
  end
  alias Elixir.Foo.Bar, as: Bar
end

如果之后Bar模塊在Foo的模塊定義之外被調(diào)用,那就必須使用它的全名(Foo.Bar)或者別名.

 注意:在Elixir中,你不必再定義Foo.Bar模塊之前先定義Foo模塊,因為語言會將所有模塊名轉(zhuǎn)化為原子.你可以定義任意嵌套的模塊而不需要定義任何鏈條上的模塊(例如:Foo.Bar.Baz不需先定義FooFoo.Bar).


以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號