在这段代码中,给定一个结构<ion-footer>
<ion-toolbar>
<ion-buttons>
<button ion-button color="dark" (click)="btn_reportlog()" start>Reportar Log</button>
<button ion-button color="danger" (click)="btn_deletlog()" end>Excluir Log</button>
</ion-buttons>
</ion-toolbar>
</ion-footer>
我试图摆脱每个序列中的元素“B”。为此,我的意图是用Seq[Seq[String]]
替换字段,然后展平Seq。问题是flatten语句不能编译,为什么会这样,以及如何解决这个问题?
None
答案 0 :(得分:2)
作业的结果是Unit
。不是您想要的map()
。
None
的赞美是Some()
,您需要使用它来保持结果类型一致。
map()
后跟flatten
可以合并为flatMap()
。
-
Seq(Seq("A","B","C"),Seq("A","B","C")).map { rec =>
rec.zipWithIndex.flatMap { case (field, i) =>
if (field == "B")
None
else
Some(field + i)
}
}
//res0: Seq[Seq[String]] = List(List(A0, C2), List(A0, C2))
答案 1 :(得分:1)
我不确定你为什么要这么简单地做一些事情 一种错综复杂的方式。以下是从您的描述中推断出的代码:
username - start_time - endt_time
test - 08:00:00 - 10:00:00
打印:
val withoutB = Seq(Seq("A","B","C"),Seq("A","B","C")).map{ _.filterNot(_ == "B")}
val flattened = withoutB.flatten
println(withoutB)
println(flattened)
希望有助于理解您的错误,我已强制您的代码段 编译,使用其他类型的所有中间结果对其进行注释,并将其打印出来:
List(List(A, C), List(A, C))
List(A, C, A, C)
打印:
val withNones: Seq[Seq[Any]] = Seq(Seq("A","B","C"),Seq("A","B","C")).map{ rec =>
val rec2: Seq[Any] = rec.zipWithIndex.map{ case (field, i) =>
if (field == "B")
None
else
field + i
}
rec2
}
val flattenedWithNones: Seq[Any] = withNones.flatten
println(withNones)
println(flattenedWithNones)
但这很可能不是你想要的。
答案 2 :(得分:1)
下面:
scala> Seq(Seq("A","B","C"),Seq("A","B","C")).flatten.filterNot(_ == "B")
res0: Seq[String] = List(A, C, A, C)