匯入(Imports)與模組(Modules)
Elm 中匯入模組使用 import
關鍵字,例如:
import Html
這裡匯入 Html
模組。接著,使用完整修飾路徑(fully qualified path)來使用這個模組的函式及型別。
Html.div [] []
也可以只匯入特定的函式或型別:
import Html exposing (div)
div
被混入目前作用域(scope)中。你可以直接使用:
div [] []
你甚至可以將模組的所有東西匯出:
import Html exposing (..)
這樣就可以直接用模組所有的函式及型別。但在大多情況下並不建議這樣使用,這會最終造成歧異或模組之間的衝突。
模組與型別名稱相同
許多模組會匯出與其模組名稱相同的型別。例如,Html
模組有個 Html
型別,Task
模組有個 Task
型別。
下列函式傳回 Html
元素:
import Html
myFunction : Html.Html
myFunction =
...
同等於:
import Html exposing (Html)
myFunction : Html
myFunction =
...
第一個例子只匯入 Html
模組並使用完整資格修飾路徑 Html.Html
。
第二個例子從 Html
模組中匯出 Html
型別。直接使用 Html
型別。
模組宣告
當你新增模組時,需要在檔案最上方加入 module
宣告:
module Main exposing (..)
Main
是模組名稱。exposing (..)
表示匯出模組中所有函式及型別。Elm 預期檔案名稱為 Main.elm,換言之,檔案名稱與模組名稱相同。
應用程式可以有深層檔案結構。例如,檔案 Players/Utils.elm 的模組宣告為:
module Players.Utils exposing (..)
應用程式其他地方可以用下列語句匯入該模組:
import Players.Utils