我是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)
}
答案 0 :(得分:5)
您正在将元组类型(在这种情况下为ApiClient.php
)与Tuple2[String, Int]
进行比较,这可行,因为0
已在==
上定义,但没有&#39}当你想到它时,你会有很大的意义。你应该看一下元组的第二个元素:
AnyRef
或者如果你想稍微增强可读性,你可以解构元组:
if (dataInput1._2 == 0)
另外,您要将val (line, num) = f(readLine)
if (num == 0)
与dataInput
(false
)进行比较,而不是分配错误:
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
}
}
}
}