这个Elm示例的主要函数类型注释是什么意思?
main : Html msg
main =
div [] [ text "1" ]
什么是HTML和味精?
答案 0 :(得分:5)
首先,该函数不是函数,因为它不带任何参数。
但是,类型注释是说main
的类型为Html
,其变体形式为msg
。
Html
是类型,例如Int
或String
,而msg
是类型变量。
某些类型可以有变体,以List a
为例。
List a
意味着您声明一个List
类型变量无关或尚不知道的地方。例如,List.length
方法的类型注释为:
length : List a -> Int
使用此方法时,通过a
的行为,您肯定会拥有类型而不是String
,例如Int
或length
或其他任何类型。不会改变。
不要被msg
的{{1}}所迷惑。它具有相同的含义。在Elm中,您渲染可能会分发某些消息的html代码,通常将它们定义为联合类型,例如:
Html
因此,您的主声明可以保留为type Msg
= ClickedSave
| EnteredText String
或Html msg
,直到您发送消息为止。
例如,如果您将Html a
处理程序添加到onClick
中,例如:
div
类型注释变成(无论您是否注释)main =
div [ onClick ClickedSave ] [ text "1" ]
,因为现在您要分派的消息是Html Msg
类型。
希望很清楚,对不起我的英语,这不是我的母语。