Scala:使用for循环

时间:2017-01-28 21:25:55

标签: scala

对于特定的应用程序,我需要使用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)

如何通过循环返回已排序的数组或集合?

1 个答案:

答案 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
}