这个Elm示例的主要函数类型注释的含义是什么?
main : Html msg
main =
div [] [ text "1" ]
Run Code Online (Sandbox Code Playgroud)
HTML和味精是什么?
首先,那个不是函数,因为它不带任何参数。
但是,类型注释是说mainis的类型Html具有未知变量msg。
Html是类型,例如Int或String,并且msg是类型变体。
以某些类型List a为例,可以有变体。
List a表示您正在声明List类型变体无关或未知的位置。例如,List.length方法的类型注释为:
length : List a -> Int
Run Code Online (Sandbox Code Playgroud)
当您使用此方法时,由于的行为不变,因此您肯定会拥有类型而不是a,例如String或之类的。Intlength
不要被当时的困惑msg除Html。它具有相同的含义。在Elm中,您渲染可能会分发某些消息的html代码,并且通常将它们定义为联合类型,例如:
type Msg
= ClickedSave
| EnteredText String
Run Code Online (Sandbox Code Playgroud)
因此,您的主声明可以保留Html msg,或者Html a直到您调度消息为止。
例如,如果您将一个onClick处理程序添加到您的divlike:
main =
div [ onClick ClickedSave ] [ text "1" ]
Run Code Online (Sandbox Code Playgroud)
类型注释成为(无论您是否注释)Html Msg,因为现在您分派的消息是type Msg。
希望一切都清楚,对不起我的英语,这不是我的母语。