elm - 联合类型和模型
elm - union types and the model
this 指南中的以下代码使用联合类型来保存所有可能的小部件类型,然后呈现视图:
type Widget
= ScatterPlot (List (Int, Int))
| LogData (List String)
| TimePlot (List (Time, Int))
view : Widget -> Element
view widget =
case widget of
ScatterPlot points ->
viewScatterPlot points
LogData logs ->
flow down (map viewLog logs)
TimePlot occurrences ->
viewTimePlot occurrences
我的基本问题是:
关于Widget
类型,这里的底层模型是什么?
给定一个动作(例如,用户想要查看散点图小部件),应更新的底层结构是什么?
小部件是您的原始数据。然后您需要单独建模要显示的数据
type alias Model = Widget
然后假设您有一些传入的 IO 数据
update action model =
case action of
ScatterPoints pts -> -- List (Int, Int)
ScatterPlot pts
LogPoints pts ->
LogData pts
...
然后将数据加载到正确类型的 Widget 中,原始问题中的视图函数将知道如何处理数据
this 指南中的以下代码使用联合类型来保存所有可能的小部件类型,然后呈现视图:
type Widget
= ScatterPlot (List (Int, Int))
| LogData (List String)
| TimePlot (List (Time, Int))
view : Widget -> Element
view widget =
case widget of
ScatterPlot points ->
viewScatterPlot points
LogData logs ->
flow down (map viewLog logs)
TimePlot occurrences ->
viewTimePlot occurrences
我的基本问题是:
关于Widget
类型,这里的底层模型是什么?
给定一个动作(例如,用户想要查看散点图小部件),应更新的底层结构是什么?
小部件是您的原始数据。然后您需要单独建模要显示的数据
type alias Model = Widget
然后假设您有一些传入的 IO 数据
update action model =
case action of
ScatterPoints pts -> -- List (Int, Int)
ScatterPlot pts
LogPoints pts ->
LogData pts
...
然后将数据加载到正确类型的 Widget 中,原始问题中的视图函数将知道如何处理数据