0
元素的單一列表我要壓平嵌套列表結構壓平列表的列表中階
MyGrp(List(MyGrp(List(TypeA(2))), MyGrp(List(TypeB(ABC), TypeC(20.0)))))
到List(Type(A),TypeB(ABC),TypeC(20.0))
trait Msg {
def toCustString(flag:Boolean): String
}
trait Ele[T] extends Msg {
val value: T
override def toCustString(flag:Boolean): String = s"${value}"
}
trait Grp extends Msg {
val list: Seq[Msg]
override def toCustString(flag: Boolean = false): String = {
val sep = if (flag) "\n" else "!"
test((builder: StringBuilder, elem: Msg) => builder.append(s"$sep${elem.toCustString(false)}$sep"))
}
def test(acc: (StringBuilder, Msg) => StringBuilder): String = {
list.foldLeft(StringBuilder.newBuilder)(acc).toString()
}
}
case class MyMessage(list:Seq[Msg]) extends Grp
case class TypeA(value: Int) extends Ele[Int]
case class TypeB(value: String) extends Ele[String]
case class TypeC(value: Float) extends Ele[Float]
case class MyGrp (list:Seq[Msg]) extends Grp
object Demo extends App{
val grp1 = MyGrp(Seq(TypeA(2)))
val grp2 = MyGrp(Seq(TypeB("ABC"), TypeC(20)))
val s=MyGrp(Seq(grp1,grp2))
}
我已經嘗試使用
s.list.flatten
但它說'錯誤:(51,10)沒有隱式視圖 avai來自Msg => scala.collection.GenTraversableOnce [B]。
s.list.flatten」s.list.map(x=>x.toCustString())
但是這給一個字符串形式,我想作一個列表
THKS我有一個列表。現在我想將它們轉換爲一個清單,如'一個分隔符號「|」' – coder25
築巢的更深層次不起作用:'MyGrp(SEQ( MyGrp( SEQ(MyGrp(SEQ(類型A(0)))))))' – jwvh