找到:所需的单位:for循环的List [Int]类型不匹配错误

时间:2019-04-22 03:25:11

标签: scala

找到

类型不匹配错误:所需单位:List [Int],用于scal中的for循环如何解决?

我正在编写此函数,它给了我第一个for循环错误。

def f(num:Int,arr:List[Int]):List[Int] = {
     for (i <- arr){
         for (j <- 0 until num){
             var tmplst = List[Int]()
             i :: tmplst
         }
     }
 }

我期望数组的每个元素都将运行下一个for循环。

2 个答案:

答案 0 :(得分:2)

按如下所述重写for理解:

def f(num:Int,arr:List[Int]):List[Int] = 
    for {
       i <- arr
       j <- 0 until num
    } yield i

答案 1 :(得分:2)

您的函数需要返回List[Int],这没有发生。 由于您正在使用可变变量,因此请增加其范围并返回如下内容:

def f(num: Int, arr: List[Int]): List[Int] = {
  var tmplst = List[Int]()

  for (i <- arr) {
    for (j <- 0 until num) {
      tmplst = i :: tmplst
    }
  }

  tmplst
}

println(f(5, List(1, 2))) // List(2, 2, 2, 2, 2, 1, 1, 1, 1, 1)

如果要使其正常运行,

def fFunctional(num: Int, arr: List[Int]): List[Int] = {
  arr.foldLeft(List.empty[Int]) { case (list, i) =>
    (0 until num).foldLeft(list) { case (l, j) =>  i :: l }
  }
}

println(fFunctional(5, List(1, 2)))