请考虑以下代码段:
type alias Model =
{ x : Int }
testFunc : Model -> Html String
testFunc model =
div [] []
Run Code Online (Sandbox Code Playgroud)
我在这里很困惑.div是一个返回a的函数Html msg.但 testFunc回报Html String.
这是如何编译的?我错过了一些非常基本的理解吗?
Pet*_*ete 10
你可以种治疗msg像泛型在面向对象的编程.虽然概念类似,但这在技术上并不正确.请记住,通用术语严格来说并不是正确的术语.
据说,div是一个函数返回一个Html'泛型'类型的值msg(msg可以是任何类型).这将用Html<A>Java或C#编写,其中is A是任何类型的占位符.
Elm有类型推断,所以当返回类型testFunc为Html StringElm时推断出msg必须是一个String类型.
另请注意,Elm要求通用类型为小写(例如msg).它经常在Elm代码中混淆,因为人们通常会定义一个真实的类型Msg并命名通用占位符类型msg.