从另一个模块公开和导入数据构造函数
Exposing and importing a data constructor from another module
在我的 Elm 程序中,我想在一个模块中定义一个类型:
MyModule.elm:
module MyModule exposing (MyType)
type MyType = Constr1 String | Constr2 Int
并在另一个模块中构造一个这种类型的值:
Main.elm:
import MyModule exposing (MyType)
import Html exposing (text)
main =
let x = Constr1 "foo" in
text "hello"
当我构建它时:
elm-package install elm-lang/html && elm-make Main.elm
我得到:
NAMING ERROR ------------------------------------------------------- Main.elm
Cannot find variable `Constr1`
6| let x = Constr1 "foo" in
^^^^^^^
Detected errors in 1 module.
如果我在两个 exposing
子句中都使用 (..)
,这编译得很好,但我想知道如何表达我想公开构造函数。
旁注:我还想知道我应该在文档中的什么地方找到它。
您可以像这样指定要公开的构造函数:
module MyModule exposing (MyType(Constr1, Constr2))
可以使用 (..)
表示法公开一个类型的所有构造函数:
module MyModule exposing (MyType(..))
如果您不想公开任何构造函数(意味着您有其他公开的函数可以创建您的类型的值,您只需指定类型:
module MyModule exposing (MyType, otherFunctions)
上有关于此主题的社区文档
在我的 Elm 程序中,我想在一个模块中定义一个类型:
MyModule.elm:
module MyModule exposing (MyType)
type MyType = Constr1 String | Constr2 Int
并在另一个模块中构造一个这种类型的值:
Main.elm:
import MyModule exposing (MyType)
import Html exposing (text)
main =
let x = Constr1 "foo" in
text "hello"
当我构建它时:
elm-package install elm-lang/html && elm-make Main.elm
我得到:
NAMING ERROR ------------------------------------------------------- Main.elm
Cannot find variable `Constr1`
6| let x = Constr1 "foo" in
^^^^^^^
Detected errors in 1 module.
如果我在两个 exposing
子句中都使用 (..)
,这编译得很好,但我想知道如何表达我想公开构造函数。
旁注:我还想知道我应该在文档中的什么地方找到它。
您可以像这样指定要公开的构造函数:
module MyModule exposing (MyType(Constr1, Constr2))
可以使用 (..)
表示法公开一个类型的所有构造函数:
module MyModule exposing (MyType(..))
如果您不想公开任何构造函数(意味着您有其他公开的函数可以创建您的类型的值,您只需指定类型:
module MyModule exposing (MyType, otherFunctions)
上有关于此主题的社区文档