加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

Scala – 如何打印案例类,如(漂亮的打印)树

发布时间:2020-12-16 09:47:28 所属栏目:安全 来源:网络整理
导读:我使用Scala Combinators做一个解析器。太棒了。我最终得到一个长列表的entagled case类,如:ClassDecl(复杂,列表(VarDecl(Real,float),VarDecl(Imag,float))),只是100倍更长。我想知道是否有一个好的方法来打印像类这样的树类样式的案例类,这样更容
我使用Scala Combinators做一个解析器。太棒了。我最终得到一个长列表的entagled case类,如:ClassDecl(复杂,列表(VarDecl(Real,float),VarDecl(Imag,float))),只是100倍更长。我想知道是否有一个好的方法来打印像类这样的树类样式的案例类,这样更容易阅读..? (或某种其他形式的漂亮打印)

ClassDecl
  name = Complex
  fields =
  - VarDecl
      name = Real
      type = float
  - VarDecl
      name = Imag
      type = float

^我想结束这样的东西

编辑:奖金问题

是否还有一种方法来显示参数的名称? Like:ClassDecl(name = Complex,fields = List(…)?

解决方法

查看一个名为 sext的小扩展库。它出口 these two functions完全为了这样的目的。

以下是如何用于您的示例:

object Demo extends App {

  import sext._

  case class ClassDecl( kind : Kind,list : List[ VarDecl ] )
  sealed trait Kind
  case object Complex extends Kind
  case class VarDecl( a : Int,b : String )


  val data = ClassDecl(Complex,List(VarDecl(1,"abcd"),VarDecl(2,"efgh")))
  println("treeString output:n")
  println(data.treeString)
  println()
  println("valueTreeString output:n")
  println(data.valueTreeString)

}

以下是该程序的输出:

treeString output:

ClassDecl:
- Complex
- List:
| - VarDecl:
| | - 1
| | - abcd
| - VarDecl:
| | - 2
| | - efgh

valueTreeString output:

- kind:
- list:
| - - a:
| | | 1
| | - b:
| | | abcd
| - - a:
| | | 2
| | - b:
| | | efgh

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读