在我的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
,那么编译很好,但我想知道如何表达我想暴露构造函数。
旁注:我也想知道我应该在文档中找到这个。
答案 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(..))
上有关于此主题的社区文档