如何在 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 中用于构思和贡献它的技术来绕过限制)