首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从另一个模块公开并导入数据构造函数

从另一个模块公开并导入数据构造函数
EN

Stack Overflow用户
提问于 2016-05-24 13:56:51
回答 1查看 1.2K关注 0票数 2

在我的Elm程序中,我想在一个模块中定义一个类型:

MyModule.elm:

代码语言:javascript
复制
module MyModule exposing (MyType)
type MyType = Constr1 String | Constr2 Int

并在另一个模块中构造此类型的值:

Main.elm:

代码语言:javascript
复制
import MyModule exposing (MyType)
import Html exposing (text)
main =
    let x = Constr1 "foo" in
        text "hello"

当我用:

代码语言:javascript
复制
elm-package install elm-lang/html && elm-make Main.elm

我得到:

代码语言:javascript
复制
NAMING ERROR ------------------------------------------------------- Main.elm

Cannot find variable `Constr1`

6|     let x = Constr1 "foo" in
               ^^^^^^^


Detected errors in 1 module.     

如果我在两个(..)子句中都使用了exposing,这将编译得很好,但我想知道如何表示我想公开构造函数。

附带说明:我还想知道在文档中应该在哪里找到这个。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-05-24 14:07:12

您可以指定像这样公开哪些构造函数:

代码语言:javascript
复制
module MyModule exposing (MyType(Constr1, Constr2))

所有类型的构造函数都可以使用(..)表示法公开:

代码语言:javascript
复制
module MyModule exposing (MyType(..))

如果您不想公开任何构造函数(意味着您有其他公开的函数来创建您的类型的值),您只需要指定以下类型:

代码语言:javascript
复制
module MyModule exposing (MyType, otherFunctions)

榆树-社区.github.io/elm-常见问题上有关于这个主题的社区文档

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37415795

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档