私はdeliminatorが倍使用して文字列にリストのリストに変換したい文字列にリストのリストを変換するために、左倍
私は文字列を作成しようとしていますが、左が、それは余分なdeliminatorがあり
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))
val m = MyMessage(Seq(TypeA(2),s)).toCustString(false)
print(m)
}
私の出力がある!2 !!!! 2 !!!! ABC !! 20.0
を更新しました!
2!2!ABC!20.0!通常、私はmkStringを使用区切りの文字列にリスト項目を変換する
私のコンピュータ上の – coder25
私のコンピュータにこのコードはすでに返されているのですか? – mkUltra
@mkUltraは間違いのために試しました。私の予想される出力は '2!2!ABC!20.0!'です。 – coder25