我正在尝试执行以下代码。
val input = 0
scala> val list = Seq((1,2,3),(4,5,6),if(input == 1)(15,16,17),(7,8,9),if(input == 1)(10,11,12))
执行上面的代码后,我得到的结果低于结果。
list:Seq [Any] = List((1,2,3),(4,5,6),(),(7,8,9),())
但我需要以下输出 -
清单((1,2,3),(4,5,6),(7,8,9))
请帮忙。
答案 0 :(得分:1)
选项1,将所有内容打包在Option
中并调用flatten
:
val list = Seq(Option((1,2,3)),Option((4,5,6)),
if(input == 1) Option((15,16,17)) else None,
Option((7,8,9)),
if(input == 1) Option((10,11,12)) else None).flatten
选项2,如果排序无关紧要,您可以只展平可选的那些:
val must = Seq((1,2,3),(4,5,6),(7,8,9))
val maybe = Seq(if(input == 1) Option((15,16,17)) else None,
if(input == 1) Option((10,11,12)) else None).flatten
val list = must ++ maybe
答案 1 :(得分:0)
如果您已经有一个数组,并希望在结果
之后过滤空数组list: Seq[Any] = List((1,2,3), (4,5,6), (), (7,8,9), ())
你可以简单地list.filter(_ != ())
提供输出
List((1,2,3), (4,5,6), (7,8,9))
希望这有帮助
答案 2 :(得分:-1)
您的if(input == 1)(10,11,12)
没有else
。
您可以自己尝试并做:
val input = 0 val x = if(input == 1)(10,11,12)
您会看到x
为Any
。 (不是前面所说的Unit
)
虽然你想要做什么,但目前尚不清楚。