Elixir 別名

2023-12-15 14:27 更新

alias允許你為任何具名模塊賦予別名.想象一下我們的Math模塊要使用一個特殊的列表執(zhí)行方法來做特定的數(shù)學操作:

defmodule Math do
  alias Math.List, as: List
end

從現(xiàn)在起,任何提到List的地方都會自動擴展成Math.List.如果有人想訪問原始的List,就需要在之前加上模塊名Elixir.:

List.flatten             #=> uses Math.List.flatten
Elixir.List.flatten      #=> uses List.flatten
Elixir.Math.List.flatten #=> uses Math.List.flatten
所有在Elixir中定義的模塊,都定義在一個主要Elixir命名空間中.為了方便,在調(diào)用它們時你可以省略"Elixir".

別名經(jīng)常用于定義縮寫.事實上,調(diào)用alias時不帶:as,就會自動將模塊名的最后部分設(shè)為別名.例如:

alias Math.List

等同于

alias Math.List, as: List

注意alias確定了語法范圍,能讓你在特定的函數(shù)中設(shè)置別名:

defmodule Math do
  def plus(a, b) do
    alias Math.List
    # ...
  end

  def minus(a, b) do
    # ...
  end
end

在上述例子中,由于我們是在plus/2函數(shù)中調(diào)用的alias,所以別名只在函數(shù)plus/2中可用.對minus/2沒有影響.

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

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號