从另一个模块

时间:2016-05-24 13:56:51

标签: elm

在我的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,那么编译很好,但我想知道如何表达我想暴露构造函数。

旁注:我也想知道我应该在文档中找到这个。

1 个答案:

答案 0 :(得分:5)

您可以指定要公开的构造函数:

  function(data, status){
  var cleanData = $.parseJSON(data);
  var i = 1;
  $.each(cleanData, function(key, value, i) {
  $( "#list" ).append("<div class='large-12 columns'>
  <div class='large-1 columns'>" + i + "</div>
  <div class='large-10 columns'>
  <p> " + value.title + "</p>
  </div>
  <div class='large-1 columns'>" + value.count +"</div>
  </div>" );
    i = i + 1;
    });
   }

可以使用module MyModule exposing (MyType(Constr1, Constr2)) 表示法公开所有类型的构造函数:

(..)

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

module MyModule exposing (MyType(..))

elm-community.github.io/elm-faq

上有关于此主题的社区文档