Scala中的var_dump()

tot*_*shi 16 scala

有没有方便的方法来转储Scala中指定对象的所有成员,
比如var_dump()PHP函数

Von*_*onC 8

如" 如何转储/检查Java中的对象或变量 "中所述(是的,我知道,问题是关于Scala):

Scala(控制台)有一个非常有用的功能来检查或转储变量/对象值:

scala> def b = Map("name" -> "Yudha", "age" -> 27)
b: scala.collection.immutable.Map[java.lang.String,Any]

scala> b
res1: scala.collection.immutable.Map[java.lang.String,Any] = Map((name,Yudha), (age,27))
Run Code Online (Sandbox Code Playgroud)

但是如果你想了解更多细节,你可以试试REPL Scala Utils,以便在Scala REPL中获得" 更简单的对象检查 "

所以我编写了一个用于Scala REPL的实用程序,它将打印出一个对象的所有"属性".

(注意:"我"在这里:Erik Engbrecht,同样在BitBucket上)

以下是一些示例用法:

scala> import replutils._
import replutils._

scala> case class Test(a: CharSequence, b: Int)
defined class Test

scala> val t = Test("hello", 1)
t: Test = Test(hello,1)

scala> printAttrValues(t)
hashCode: int = -229308731
b: int = 1
a: CharSequence (String) = hello
productArity: int = 2
getClass: Class = class line0$object$$iw$$iw$Test
Run Code Online (Sandbox Code Playgroud)

这看起来相当反气候,但在花了几个小时打字objName以查看那里有什么,并且盯着方法,这似乎是一个奇迹.
此外,它的一个简洁特性是,如果返回的对象的类与方法上声明的类不同,它将打印声明的类和实际返回的类.