我想向用户显示一个值,一个简化类型和原始类型。
我使用pprint库作为值,scala.Manifest
表示类型。
def render[T](a: T)(implicit m: Manifest[T]): (String, String, String) =
(pprint(a), simplify(m), m.toString)
我想实现这个simplify
函数。
它会删除常见的导入
def simplify[T](m: Manifest[T]): String =
m.toString
.replaceAll("scala.", "")
.replaceAll("scala.collection.immutable.", "")
.replaceAll("scala.collection.mutable.", "")
.replaceAll("java.lang.", "")
但m.toString
有以下缺点
(Int, Int) => Int
变为scala.Function2[Int, Int, Int]
(Int, Int)
变为scala.Tuple2[Int, Int]
答案 0 :(得分:0)
类型漂亮的打印是在带有TPrint[T]
libraryDependencies += "com.lihaoyi" % "ammonite-repl" % "0.5.4" cross CrossVersion.full
import ammonite.repl.frontend.TPrint
val config = pprint.Config.Defaults.PPrintConfig
def render[T](a: T)(implicit tp: TPrint[T], m: Manifest[T]): (String, String, String) =
(pprint(a), tp.render(config), m.toString)