Elm 主函数类型注解

标签 elm

这个Elm例子的main函数类型注解是什么意思?

main : Html msg
main =
    div [] [ text "1" ]

什么是 Html 和 msg?

最佳答案

首先,那个不是函数,因为它不接受任何参数。

但是,类型注释表示 mainHtml 类型,具有未知的变体 msg

Html 是类型,如 IntStringmsg 是类型变体。

有些类型可以有变体,以List a为例。

List a 表示您正在声明一个 List,其中类型变体不相关或未知。例如,List.length 方法的类型注解是:

length : List a -> Int

当你使用这个方法时,你肯定会有一个类型而不是 a,比如 StringInt 或其他什么, length 的行为不会改变。

那么不要被添加到 Htmlmsg 搞糊涂了。它具有相同的含义。在 Elm 中,您呈现可能会发送一些消息的 html 代码,并且您通常将它们定义为联合类型,例如:

type Msg
  = ClickedSave
  | EnteredText String

因此,您的主声明可以保留为 Html msgHtml a,直到您发送一条消息。

例如,如果您将 onClick 处理程序添加到您的 div,例如:

main =
    div [ onClick ClickedSave ] [ text "1" ]

类型注释变为(无论您是否注释它)Html Msg,因为现在您要发送的消息是 Msg 类型。

希望它是清楚的,对不起我的英语,它不是我的母语。

关于Elm 主函数类型注解,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55821983/

相关文章:

elm - 让单选按钮反射(reflect)模型

elm - 使用 foldp 折叠多个信号

javascript - 带控制台/Node 的 Elm 中的 Hello World

每次刷新页面时,elm-debugger 窗口都会关闭。如何防止这种形式的发生?

elm - 使用 toInt 函数将字符串转换为 int

functional-programming - Elm:为 Elm 程序生成信号图

elm - 在 Elm 中,为什么这是 Int-Float 类型不匹配?

functional-programming - Elm:理解 foldp 和鼠标点击

elm - 用于生成变量和函数的Elm语法:如何区分?

json - Elm:解析 JSON 中的状态代码(带有潜在的错误消息)