3

有没有办法获得给定信号的当前值?或者,这是我在编写惯用 Elm 时不应该做的事情吗?

4

2 回答 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 回答