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