模块暴露在Elm 0.18中

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了模块暴露在Elm 0.18中相关的知识,希望对你有一定的参考价值。

我有一个类型的榆木模块,包括类型和类型别名Foo,Bar和Baz。当我导出这样的一切时,代码工作:

module Types exposing (..)

但是,如果我明确包含所有类型,则代码会中断。

module Types exposing (Foo, Bar, Baz)

消费文件上的import语句也是如此;两者都需要是exposing (..)

这两种方法有什么区别?

答案

我最近才学习Elm,但听起来好像你的一个类型(Msg)被定义为一个联合类型,在导出这个类型时你需要使用Msg(..)语法。

module Types exposing (Msg (..))

type Msg = FirstAction | SecondAction | ThirdAction

或者在导入联合类型的情况下。

import Types exposing (Msg (..))

请参阅GitHub issue #968,了解为什么联合类型需要这样做。

另一答案

看看这个类型定义:

    type Foo
        = Foo
        | Baz
        | Quux

你看到两个Foo:前面是类型构造函数,后者是数据构造函数。类型构造函数和数据构造函数位于不同的名称空间中,因此您可以为两者使用相同的名称。

在你写的时候

    import Types exposing (Foo)

你只导入类型构造函数Foo。要导入Foo的数据构造函数,必须在导入类​​型构造函数后在括号中显式执行:

    import Types exposing (Foo (Foo, Baz))

或者,如果要导入此类型的所有数据构造函数:

    import Types exposing (Foo (..))

以上是关于模块暴露在Elm 0.18中的主要内容,如果未能解决你的问题,请参考以下文章

如何通过单击适配器类中代码的项目中的删除按钮来删除列表视图中的项目后重新加载片段?

Angular.js 学习二---$scope和$rootScope,Angular模块的run方法,依赖注入中代码压缩

如何去除pycharm中代码下的波浪线

Elm:如何在自己的浏览器窗口中呈现每个 elm 模块? - 同一个应用程序中的两个模块(主模块)

React 0.18 导致模块错误

html 在HTML中嵌入Elm模块。使用`elm-make Stamper.elm`编译或只是通过指定HTML输出文件w自动生成HTML