这个Elm例子的main函数类型注解是什么意思?
main : Html msg
main =
div [] [ text "1" ]
什么是 Html 和 msg?
最佳答案
首先,那个不是函数,因为它不接受任何参数。
但是,类型注释表示 main
是 Html
类型,具有未知的变体 msg
。
Html
是类型,如 Int
或 String
,msg
是类型变体。
有些类型可以有变体,以List a
为例。
List a
表示您正在声明一个 List
,其中类型变体不相关或未知。例如,List.length
方法的类型注解是:
length : List a -> Int
当你使用这个方法时,你肯定会有一个类型而不是 a
,比如 String
或 Int
或其他什么, length
的行为不会改变。
那么不要被添加到 Html
的 msg
搞糊涂了。它具有相同的含义。在 Elm 中,您呈现可能会发送一些消息的 html 代码,并且您通常将它们定义为联合类型,例如:
type Msg
= ClickedSave
| EnteredText String
因此,您的主声明可以保留为 Html msg
或 Html a
,直到您发送一条消息。
例如,如果您将 onClick
处理程序添加到您的 div
,例如:
main =
div [ onClick ClickedSave ] [ text "1" ]
类型注释变为(无论您是否注释它)Html Msg
,因为现在您要发送的消息是 Msg
类型。
希望它是清楚的,对不起我的英语,它不是我的母语。
关于Elm 主函数类型注解,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55821983/