注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

阿弥陀佛

街树飘影未见尘 潭月潜水了无声 般若观照心空静...

 
 
 

日志

 
 
关于我

一直从事气象预报、服务建模实践应用。 注重气象物理场、实况场、地理信息、本体知识库、分布式气象内容管理系统建立。 对Barnes客观分析, 小波,计算神经网络、信任传播、贝叶斯推理、专家系统、网络本体语言有一定体会。 一直使用Java、Delphi、Prolog、SQL编程。

网易考拉推荐

scala Iteratee  

2013-11-04 23:51:58|  分类: play |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

参见: Play 2.2 Actor Room: Websocket (&more) Room Manager Only With Actors
参见:In Scala, how would I combine event driven programming with a functional approach?
package akkaTest
case class State(dailyHigh: Int = 0)
object StateTest {
  type Event = (State => State)
  def mainLoop(currState: State, events: Stream[Event]): State =
    if (events.nonEmpty) {
      val newState = events.head(currState)
      mainLoop(newState, events.tail)
    } else currState
  def onTrade(price: Int): Event = (s: State) =>
    if (price > s.dailyHigh) s.copy(dailyHigh = price) else s
  def main(args: Array[String]) {
    val events = onTrade(5) #:: onTrade(2) #:: onTrade(10) #:: onTrade(17)#:: onTrade(15) #:: Stream.empty
    val finalState = mainLoop(State(), events)
    println(finalState)
  }
}
该程序找出交易记录中最大的值。也可用Iteretee来实现。
Iteratee用于对Future的IO;
Enumerator用于现实数据块的处理。Enumerator所处理的类型(Type)与Iteratee的相同;
Future的onComplete,onSuccess,onFailure用于反映对Enumerator的执行状态;
Enumeratee用于对Iteratee的适配,使Enumerator的输入/出能够满足Iteratee的要求。
Iteratee,Enumerator,Future,Enumeratee都是Monad。将它们以Iteratee为线索进行组合集成,具有广泛的抽象性。不仅可以可以用于文件/资源的本地、互联网传输,也可以用于如上的投资、科学计算处理。
  评论这张
 
阅读(442)| 评论(0)
推荐 转载

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017