Scala做循环没有结束

时间:2016-12-15 13:40:46

标签: scala

我是scala的新手,我正在尝试实现do while循环,但我似乎无法让它停止。我不确定我做错了什么。如果有人可以帮助我,那就太好了。它不是我所知道的最好的循环,但我是该语言的新手。 以下是我的代码:

def mnuQuestionLast(f: (String) => (String, Int)) ={
  var dataInput = true

  do {
    print("Enter 1 to Add Another 0 to Exit > ")
    var dataInput1 = f(readLine)

    if (dataInput1 == 0){
      dataInput == false
    } else {
      println{"Do the work"}
    }
  } while(dataInput == true)
}

2 个答案:

答案 0 :(得分:5)

您正在将元组类型(在这种情况下为ApiClient.php)与Tuple2[String, Int]进行比较,这可行,因为0已在==上定义,但没有&#39}当你想到它时,你会有很大的意义。你应该看一下元组的第二个元素:

AnyRef

或者如果你想稍微增强可读性,你可以解构元组:

if (dataInput1._2 == 0)

另外,您要将val (line, num) = f(readLine) if (num == 0) dataInputfalse)进行比较,而不是分配错误:

dataInput == false

答案 1 :(得分:1)

您的代码未通过功能约定。 f返回的值是一个元组,您应该通过dataInput1._2==0

检查它的元组的第二个值

因此您应将if更改为if(dataInput1._2==0)

您可以更好地重建代码:

import util.control.Breaks._


def mnuQuestionLast(f: (String) => (String, Int)) = {
  breakable {
    while (true) {
      print("Enter 1 to Add Another 0 to Exit > ")
      f(readLine) match {
        case (_, 0) => break()
        case (_,1) => println( the work"
        case _ => throw new IllegalArgumentException
      }
    }
  }
}