类型不匹配错误:所需单位: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循环。
答案 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)))