我正在尝试将我的顶级消息与子消息分开,因此我做了:
type GeneratorMsg
= BoidsGenerated (List Boid)
| ColoursGenerated (List Color)
type Msg
= Tick Time
| UpdateWorld Window.Size
| GeneratorMsg
但是,在我的主要更新功能中,当我使用 BoidsGenerated 消息时,Elm认为它的类型为 GeneratorMsg ,这是正确的。在同一时间 - 在我看来 - 它的类型为 Msg 。
有没有办法可以互换地处理 Msg 和 GeneratorMsg ?基本上,我想将更新函数拆分为较小的函数,但我希望与生成的东西有关的所有内容都由1个独立的函数处理。然后该函数将包含 BoidsGenerated 和 ColoursGenerated msgs的情况。 ---谢谢
答案 0 :(得分:1)
这里有你的名字碰撞。您有一个名为GeneratorMsg
的类型以及一个名为GeneratorMsg
的不同类型(Msg
)的构造函数。
您定义GeneratorMsg
的{{1}}构造函数的方式,它是无参数的,不包含任何信息的有效负载。您需要定义一个参数来携带Msg
值:
GeneratorMsg
然后,您可以在单独的函数中处理更新,但您必须type Msg
= Tick Time
| UpdateWorld Window.Size
| GeneratorMsg GeneratorMsg
将Cmd.map
打包成GeneratorMsg
值:
Msg