榆树 - 信号的历史价值
elm - historic value of a signal
给定一个信号,如何获得它的历史值?
类似
--current value
Signal.pastValue(0, Mouse.x)
--previous value
Signal.pastValue(1, Mouse.x)
--previous nth value
Signal.pastValue(n, Mouse.x)
我试过使用 Signal.foldp
,但它似乎是 returns 当前值或累积值,具体取决于事件编号。
Elm 不会自行跟踪历史值,但您可以使用 foldp
构建任何类型信号的列表,如下所示:
history : Signal a -> Signal (List a)
history =
Signal.foldp (::) []
最新的信号值被添加到该列表中。要查看它的实际效果,您可以将这个完整示例传递到 http://elm-lang.org/try
import Graphics.Element exposing (show)
import Mouse
main =
Signal.map show <| history Mouse.x
history : Signal a -> Signal (List a)
history =
Signal.foldp (::) []
运行 该示例可能会阐明为什么默认情况下不保留历史值:您的内存很快就会膨胀。话虽这么说,elm-reactor
的时间旅行调试器保留了历史记录,但仅用于调试目的。这不是您在生产中通常想要的东西。
给定一个信号,如何获得它的历史值?
类似
--current value
Signal.pastValue(0, Mouse.x)
--previous value
Signal.pastValue(1, Mouse.x)
--previous nth value
Signal.pastValue(n, Mouse.x)
我试过使用 Signal.foldp
,但它似乎是 returns 当前值或累积值,具体取决于事件编号。
Elm 不会自行跟踪历史值,但您可以使用 foldp
构建任何类型信号的列表,如下所示:
history : Signal a -> Signal (List a)
history =
Signal.foldp (::) []
最新的信号值被添加到该列表中。要查看它的实际效果,您可以将这个完整示例传递到 http://elm-lang.org/try
import Graphics.Element exposing (show)
import Mouse
main =
Signal.map show <| history Mouse.x
history : Signal a -> Signal (List a)
history =
Signal.foldp (::) []
运行 该示例可能会阐明为什么默认情况下不保留历史值:您的内存很快就会膨胀。话虽这么说,elm-reactor
的时间旅行调试器保留了历史记录,但仅用于调试目的。这不是您在生产中通常想要的东西。