如何获取榆树中信号的当前值?

时间:2015-11-04 10:54:51

标签: elm elm-signal

有没有办法获得给定信号的当前值?或者,这是在撰写惯用的榆树时我不想做的事情吗?

2 个答案:

答案 0 :(得分:4)

普通代码

写作惯用的榆树时,你不应该这样做 它也不可能获得信号的当前值。这将是一个副作用函数(在程序执行的不同时间返回不同的值),这将允许出现各种令人讨厌的错误。要对信号的值执行某些操作,您可以使用Signal.map映射信号,但我怀疑您已经知道该信号。

测试

如果您出于测试目的而不是普通代码询问此问题,可以使用包Apanatshka/elm-signal-extra中使用的技术来编写与信号相关的函数的测试,从而解决限制问题。 (请注意,虽然我是该软件包的作者,但测试系统的荣誉应该转到rgremple来构思和贡献它。)

答案 1 :(得分:2)

我理解它的方式,“当前价值”的概念在榆树中没有任何意义。

当然,如果你Signal.map对一个信号有一个函数,你可以说该函数总是会收到“当前值”,但我不认为这就是你的意思。

“当前价值”的概念涉及时间。它涉及到“在我要求当前价值之前”和“在我要求当前价值之后”的想法。这是你可能在命令式语言中找到的东西,但是Elm是声明性的,因此,之前和之后的概念没有任何意义。