Elm:在 foldp 中结合 actions.signal 和键盘输入

Elm : Combining both actions.signal and keyboard input in foldp

目前我正在尝试使用 elm(所以认为我是初学者)并且想知道以下内容,

我定义了以下模型:

model = foldp update initialModel actions.signal

我明白 foldp 是如何工作的,它调用我的更新方法来更改 initialModel 每当执行一个动作时(从我的 html 按钮等调用)。

但是,现在我正在努力寻找如何将按键集成到这个模型中,因为 foldp 只接受一个变化的信号。

所以我想得到这样的东西

model = foldp update initialModel (actions.signal + Keyboard.arrows)

我尝试使用 merge 方法,但我似乎无法让它工作。

谢谢!

您想使用 Signal.merge - 请查看 http://elm-lang.org/guide/reactivity#signals 以了解信号图概览

鉴于您有一个 actions 邮箱,您是否也定义了一个 Action 类型?然后你可以扩展它以包含一个 Keypress 动作:

type Action =
  ...
  | KeyPress { x : Int, y : Int }

inputs =
  Signal.merge actions.signal (Signal.map KeyPress Keyboard.arrows)

model =
  Signal.foldp update initialModel inputs