【发布时间】:2018-05-30 22:02:58
【问题描述】:
我必须实现一个函数,该函数采用剩余字符数的信号来计算颜色信号,即
- 如果还有 15 个或更多字符,则颜色为“绿色”
- 如果剩下 0 到 14 个字符(包括在内),颜色为“橙色”
- 否则(如果剩余计数为负数),颜色为“红色”
我已经通过以下方式实现了这一点:
remainingCharsCount() match {
case x if x < 0 => Signal("red")
case x if x >= 14 => Signal("green")
case _ => Signal("orange")
}
其中remainingCharsCount: Signal[Int] 是文本中剩余字符的信号。
上述实现的问题在于它不会根据剩余文本计数触发颜色更改事件。在其他实现中,我已经在 Signal 块内移动了颜色变化的逻辑。
这段代码运行良好:
Signal {
val rc = remainingCharsCount()
if (rc >= 15) "green"
else if (rc >= 0) "orange"
else "red"
}
有人可以解释我在第一次实现中做错了什么吗?
更多信息可以参考这个链接:https://github.com/ujjkumsi/FPDesign/blob/master/README.md
【问题讨论】:
标签: scala functional-programming reactive-programming