作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
keepWhen
删除了早期版本的 Elm 中的功能。我已经从 0.14 移植了一个 Elm 应用程序,但我一直在试图让它的一部分工作,它正在使用 keepWhen
.
所以基本上我正在寻找一个像
keepWhen : Signal Bool -> a -> Signal a -> Signal a
filter : (a -> Bool) -> a -> Signal a -> Signal a
最佳答案
答:从实用程序包中导入
最简单的方法是使用 Signal.Extra.keepWhen
来自 signal-extra包裹。
(完全披露:我是作者)
重要的实现细节
请注意,实现并非完全微不足道。这是包中的实现(Signal
模块导入不合格):
keepWhen : Signal Bool -> a -> Signal a -> Signal a
keepWhen boolSig a aSig =
zip boolSig aSig
|> sampleOn aSig
|> keepIf fst (True, a)
|> map snd
sampleOn
保留
keepWhen
的输出当 bool 输入更改时更新。两个过滤器的区别在于
keepWhen
从 0.14 开始只过滤来自
a
的更新事件。输入,当 bool 输入变为
True
时不对其进行采样.
sampleWhen
。 .
关于functional-programming - 如何在 Elm 0.15 中获得 keepWhen 行为?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29870883/
我是一名优秀的程序员,十分优秀!