如何在不使用var的情况下定义计数

时间:2016-09-07 09:32:33

标签: scala

我有这个简单的函数返回一些Status

def getStatus : String =
{
   //...
}

我想等到这个返回特定状态,但在退出之前仍然计算这个号码:

def wait =
{
    var count = 0
    while (getStatus != "smeStatus" && count < 10) {

        // some code here
        count++
    }
}

如何避免使用var

2 个答案:

答案 0 :(得分:3)

您可以使用递归计数的递归方法并将其返回+ 1:

def waitUntilDone(countSoFar: Int): Int = {
  if (getStatus != "smeStatus" && countSoFar < 10) {
    // some code here
    waitUntilDone(countSoFar + 1)
  } else {
    countSoFar
  }
}
// invoke it starting with 0:
val count = waitUntilDone(0)

答案 1 :(得分:0)

  def status = ""

  def waiting: Unit = {
    def check(count: Int): Unit = {
      if(count < 10 && status != "smeStatus") {
        // do something
        check(count + 1)
      } 
    }
    check(0)
  }