0

我有以下两个列表,我不确定在运行时 list2 是空的还是满的,但 list1 总是非空的,如何确保列表的以下 for 循环值至少被打印

val list1 = List(1,2,3)                   //> list1  : List[Int] = List(1, 2, 3)
val list2 = List()                        //> list2  : List[Nothing] = List()
for( counti <- list1 ; countj <- list2 ) yield println (counti + " - " + countj)
                                                  //> res7: List[Unit] = List()

我期待类似的东西

1 - BLANK
2 - BLANK
3 - BLANK

但上面的 for 循环给了我空白结果 List()

4

2 回答 2

6
for (
  counti <- list1;
  countj <- if(list2.nonEmpty) list2 else List("BLANK")
) {
  println(counti + " - " + countj)
}
于 2012-10-31T01:11:32.963 回答
2

yield首先,如果您只使用for副作用(打印),则不需要:

for( counti <- list1 ; countj <- list2 )
  println (counti + " - " + countj)

countj其次,如果您有一个空列表,您期望 的值是多少?如果countj.

这可能会做你想做的事:

// Just print counti
if (list2.isEmpty)
  for( counti <- list1 ) println(counti)
// Print both    
else for ( counti <- list1 ; countj <- list2 )
  println (counti + " - " + countj)
于 2012-10-31T01:14:43.697 回答