[解決済み] Scala - case classを木のように(きれいに)印刷する方法
2022-02-12 03:06:19
質問内容
ScalaのCombinatorを使ってパーサーを作っています。すごいですね。私が最終的に行き着いたのは、絡み合ったケースクラスの長いリストです。
ClassDecl(Complex,List(VarDecl(Real,float), VarDecl(Imag,float)))
ただ、100倍長いだけです。このようなケースクラスをツリー状に印刷して見やすくする良い方法はないものでしょうか?(または、他の形式の
プリティプリント
)
ClassDecl
name = Complex
fields =
- VarDecl
name = Real
type = float
- VarDecl
name = Imag
type = float
^ 最終的にはこんな感じにしたいです。
edit: ボーナス質問
パラメータ名を表示する方法もあるのでしょうか...?みたいな感じで。
ClassDecl(name=Complex, fields=List( ... )
?
解決方法は?
という名前の小さな拡張ライブラリをチェックしてみてください。 セクスト . これは、次のようにエクスポートします。 この2つの関数 というような目的のために、まさに
例題の使い方はこうです。
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
関連
-
[解決済み] Scalaでswitch/case(単純なパターンマッチ)を使うには?
-
[解決済み] expr() での lit() の使用について
-
[解決済み] 理解する `andThen`
-
[解決済み] scala.Float to java.Float k/v変換でScala MapをJava Mapに変換するにはどうしたらいいですか?
-
[解決済み] JavaScriptでJSONをきれいに印刷する
-
[解決済み] Ruby on RailsでJSON出力を "きれい "にフォーマットする方法
-
[解決済み] JavaからXMLをきれいに印刷する方法は?
-
[解決済み】科学的記数法なしで、与えられた精度でnumpy.arrayをpretty-printするには?
-
[解決済み】ScalaのCaseオブジェクトとEnumerationsの比較
-
[解決済み】Scalaでケースクラスのインスタンスをクローンして、1つのフィールドだけを変更するにはどうすればよいですか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] 実行時に変数の型を取得したい
-
[解決済み] scala 2.11.0 REPL を終了するには?
-
[解決済み] NoClassDefFoundError: org/apache/hadoop/fs/StreamCapabilities (s3データをsparkで読み込む際に発生します。
-
[解決済み] SparkSQL - パーケットファイルを直接読み込む
-
[解決済み】Scala 2.8のコレクション・ライブラリは「歴史上最も長い遺書」のケースか?[クローズド] Scala
-
[解決済み】Scalaにおける中括弧と括弧の正式な違い、また、どのような場合に使用すべきなのか?
-
[解決済み】ScalaでVectorを選択するのはどんなとき?
-
[解決済み】Scalaで変数をキャストする方法は?
-
[解決済み] 型の論理和(ユニオン型)はどのように定義するのですか?
-
[解決済み] Scalaの識別子 "implicitly "とは?