0
我在Elm中使用的是"compose" pattern。從Elm的父項更改構件模型
在Main.elm
,我使用下面產生初始種子Random
:
type alias Model =
{ ...
, seed : Seed
}
initialModel : Model
initialModel =
{ ...
, seed = initialSeed 0
}
init : (Model, Cmd Msg)
init =
(initialModel, generate InitializeSeed (int minInt maxInt))
type Msg
= ...
| InitializeSeed Int
update : Msg -> Model -> (Model, Cmd Msg)
update msg model =
case msg of
...
InitializeSeed value ->
({ model | seed = Random.initialSeed value }, Cmd.none)
這似乎很好用於初始化隨機數發生器種子的隨機開始值工作。
我有一個「獨立的」小部件,在主應用程序中使用。我希望在接收到InitializeSeed
消息時將種子傳遞給該小部件,然後在子部件更改(使用Random.step
)時檢索該值,以便隨後可以根據需要更新其他小部件的種子。
我該如何從update
函數Main
中爲子控件生成消息,以便我可以將種子傳給孩子?孩子如何將更新的種子返回給父母?
UPDATE:
我想通了如何通過種子下到子部件,雖然我不能肯定,這是最好的辦法。
孩子的代碼如下所示:
type alias Model =
{ ...
, seed : Seed
}
replaceSeed : Model -> Seed -> Model
replaceSeed model seed =
{ model | seed = seed }
,並在父,我修改了update
功能是這樣的:
update : Msg -> Model -> (Model, Cmd Msg)
update msg model =
case msg of
...
InitializeSeed value ->
let
seed =
Random.initialSeed value
child_ =
Child.replaceSeed model.child seed
in
({ model
| seed = seed
, child = child_
}
, Cmd.none
)
我仍然在尋找一種方式來將孩子歸還更新的種子。