对于特定的应用程序,我需要使用for循环将非排序数组中的整数添加到空sortedSet
。 (或者是一个已排序的新数组)。我知道这可以避免循环,但我想在这个例子中使用循环。
此代码似乎大致正确:
def minFor(r: Array[Int]): Int = {
var itsSorted = collection.SortedSet.empty[Int]
for(i <- 0 to r.length)
itsSorted = itsSorted + i
}
但无论我如何调整它,我总是会遇到不匹配错误:
error: type mismatch;
found : Unit
required: Int
for(i <- 0 to r.length)
如何通过循环返回已排序的数组或集合?
答案 0 :(得分:4)
您的函数minFor
应该返回Int
。但是你在函数中的最后一句话
for(i <- 0 to r.length)
itsSorted = itsSorted + i
返回Unit
。所以编译器抱怨类型不匹配。
要返回实际的有序集,您应该将函数更改为:
def minFor(r: Array[Int]) = {
var itsSorted = collection.SortedSet.empty[Int]
for(i <- 0 to r.length)
itsSorted = itsSorted + i
itsSorted
}