使用Scala,功能范例是否对分析实时数据有意义?

del*_*ber 10 scala

例如,在分析实时股票市场数据时,我向客户公开了一种方法

def onTrade(trade: Trade) {
}
Run Code Online (Sandbox Code Playgroud)

客户可以选择通过计算交易数量,计算平均值,存储高点,价格比较等来做任何事情.我公开的方法没有返回任何内容,客户端经常使用变量和可变结构进行计算.例如,在计算总交易时,他们可能会做类似的事情

var numTrades = 0

def onTrade(trade: Trade) {
    numTrades += 1
}
Run Code Online (Sandbox Code Playgroud)

单个onTrade调用可能需要做六到七个不同的事情.有没有办法将这种灵活性与功能范式相协调?换句话说,返回类型,val和不可变数据结构

ham*_*mar 10

您可能希望了解功能反应式编程.使用FRP,您可以将交易表示为事件流,并整体操纵此流,而不是一次关注单个交易.

然后,您将使用各种组合器来构建新流,例如,将返回到目前为止看到的交易数量或最高价格.

上面的链接包含指向几个Haskell实现的链接,但也可能有几个Scala FRP实现.