在功能上维护不断增长的列表

时间:2015-10-14 16:11:29

标签: scala functional-programming

我正在编写这个应用程序(同时学习scala和函数编程),它有一个需要访问的增长列表。我有一种实现它的方法,但它似乎不是一个好方法。

我有一个类在另一个线程中轮询另一个源并将响应附加到列表中。还有一个函数会偶尔使用该列表中的最新响应并附加到另一个列表。

我唯一能够提出的方法是让轮询功能改变列表。我在创建类时做了类似声明的事情。可以var stream = Stream()val list = collection.mutable.list。然后使用var stream = stream :+ response更新轮询功能。

这似乎不是一个好方法吗?

case class example extends Runnable {
  var responses = Stream[response] = Stream()
  var validResponses = Stream[response] = Stream()

  def run() {
    while(true){
      val r = pollFunction
      responses = responses :+ r
      Thread.sleep(time)
    }
  }
  def get: response = {
    lazy val r = responses.last
    if( isValid(r) ) validResponses = validResponses :+ r
    validResponses.last
  }
}

我碰巧使用了流,但可以用collection.mutable或其他东西替换。我不确定是否有办法以更实用的方式做这样的事情?

0 个答案:

没有答案