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