有没有办法获得给定信号的当前值?或者,这是我在编写惯用 Elm 时不应该做的事情吗?
问问题
203 次
2 回答
4
普通代码
在编写惯用的 Elm 时,您不应该这样做。
也无法获得信号的当前值。这将是一个副作用函数(在程序执行的不同时间返回不同的值),这将允许各种讨厌的错误出现。要对信号的值做一些事情,你可以用它来映射信号,Signal.map
但我怀疑你已经知道那个了。
测试
如果您出于测试目的而不是普通代码询问此问题,则可以使用包Apanatshka/elm-signal-extra中使用的技术来解决限制,为与信号相关的函数编写测试。(请注意,虽然我是该软件包的作者,但测试系统的荣誉应该归功于 rgremple的构思和贡献)
于 2015-11-04T11:59:53.907 回答
2
我理解它的方式,“当前值”的概念在 Elm 中没有意义。
当然,如果您Signal.map
对信号使用函数,您可以说该函数将始终接收“当前值”,但我认为这不是您的意思。
“当前值”的概念涉及时间。它涉及“在我要求当前值之前”和“在我要求当前值之后”的想法。这是您可能会在命令式语言中找到的东西,但 Elm 是声明性的,因此之前和之后的概念没有意义。
于 2015-11-04T11:10:33.877 回答