Elm主要功能类型注释

时间:2019-04-24 03:29:13

标签: elm

这个Elm示例的主要函数类型注释是什么意思?

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

什么是HTML和味精?

1 个答案:

答案 0 :(得分:5)

首先,该函数不是函数,因为它不带任何参数。

但是,类型注释是说main的类型为Html,其变体形式为msg

Html是类型,例如IntString,而msg是类型变量。

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

List a意味着您声明一个List类型变量无关或尚不知道的地方。例如,List.length方法的类型注释为:

length : List a -> Int

使用此方法时,通过a的行为,您肯定会拥有类型而不是String,例如Intlength或其他任何类型。不会改变。

不要被msg的{​​{1}}所迷惑。它具有相同的含义。在Elm中,您渲染可能会分发某些消息的html代码,通常将它们定义为联合类型,例如:

Html

因此,您的主声明可以保留为type Msg = ClickedSave | EnteredText String Html msg,直到您发送消息为止。

例如,如果您将Html a处理程序添加到onClick中,例如:

div

类型注释变成(无论您是否注释)main = div [ onClick ClickedSave ] [ text "1" ] ,因为现在您要分派的消息是Html Msg类型。

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