如何在 Elm 中获取信号的当前值?
How to get the current value of a Signal in Elm?
有没有办法获取给定信号的当前值?或者,这是我在编写惯用的 Elm 时不应该做的事情吗?
按照我的理解,"current value"这个概念在Elm中是没有意义的。
当然,如果您通过信号 Signal.map
函数,您可以说该函数将始终接收 "current value" 但我认为这不是您的意思。
"current value"的想法涉及到时间。它涉及具有 "before I ask for the current value" 和 "after I ask for the current value" 的想法。这是你可能会在命令式语言中发现的东西,但 Elm 是声明式的,因此,之前和之后的概念没有意义。
普通码
在编写惯用的 Elm 时,您不应该这样做。
也不可能获得信号的当前值。这将是一个副作用函数(在程序执行的不同时间返回不同的值),这将允许各种讨厌的错误出现。要对信号的值执行某些操作,您可以使用 Signal.map
映射信号,但我怀疑您已经知道那个。
测试
如果您出于测试目的询问此问题而不是正常代码,您可以使用包 Apanatshka/elm-signal-extra to write tests for signal-related functions. (Note that although I'm the author of that package, kudos for the testing system should go to rgremple 中用于构思和贡献它的技术来绕过限制)
有没有办法获取给定信号的当前值?或者,这是我在编写惯用的 Elm 时不应该做的事情吗?
按照我的理解,"current value"这个概念在Elm中是没有意义的。
当然,如果您通过信号 Signal.map
函数,您可以说该函数将始终接收 "current value" 但我认为这不是您的意思。
"current value"的想法涉及到时间。它涉及具有 "before I ask for the current value" 和 "after I ask for the current value" 的想法。这是你可能会在命令式语言中发现的东西,但 Elm 是声明式的,因此,之前和之后的概念没有意义。
普通码
在编写惯用的 Elm 时,您不应该这样做。
也不可能获得信号的当前值。这将是一个副作用函数(在程序执行的不同时间返回不同的值),这将允许各种讨厌的错误出现。要对信号的值执行某些操作,您可以使用 Signal.map
映射信号,但我怀疑您已经知道那个。
测试
如果您出于测试目的询问此问题而不是正常代码,您可以使用包 Apanatshka/elm-signal-extra to write tests for signal-related functions. (Note that although I'm the author of that package, kudos for the testing system should go to rgremple 中用于构思和贡献它的技术来绕过限制)