Welcome to MLink Developer Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
505 views
in Technique[技术] by (71.8m points)

为什么scala的map中嵌套一个for循环导致不返回结果?

object test {
  def main(args: Array[String]): Unit = {
    val list = List(1,2,3,4,5)
    val flags = List(true, false, false, false, false)
    val newlist = list.map(value => {
      for (flag <- flags){
        if (flag){
          value
        }
      }
    })
    newlist.foreach(println(_))
  }
}

1、list是一个由5个数值构成的数组,flags是2个布尔值构成的数组

2、对list中每一个元素,循环flags中的两个值,然后当flag为true时输出list中的元素

3、结果返回了5个空值,这是为什么?如果需要在map中嵌套for循环,正确方式是怎么做?


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Answer

0 votes
by (71.8m points)
  1. scala默认最后一行是方法返回的数据,而你这个最后一行是否for循环,所以一直返回的空。
  2. 看题主的意思是想要过滤列表,建议使用filter。
  3. map中就是一个普通的函数,只需要在最后给出正常的函数返回值就可以,或者题主在if里面添加return。

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome to MLink Developer Q&A Community for programmer and developer-Open, Learning and Share
...