Var_dump() в Scala

Есть ли удобный способ сбросить все члены указанного объекта в Scala,
например var_dump(), функция PHP?

Ответы

Ответ 1

Как упоминалось в " Как сбрасывать/проверять объект или переменную в 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))

Но если вы хотите получить более подробную информацию, вы можете дать 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

Это выглядит довольно антиклиматическим, но, проведя часы, набрав objName, чтобы увидеть, что там, и тыкать в методы, кажется чудом.
Кроме того, одна из его опрятных особенностей заключается в том, что если класс возвращаемого объекта отличается от класса, объявленного в методе, он печатает как объявленный класс, так и фактический возвращаемый класс.

Ответ 3

В скомпилированном коде наиболее приятным способом является просто объявить ваш тип как класс case, а затем использовать сгенерированный метод toString.

Любое другое подклассов Product должно быть таким же простым (в настоящее время только кортежи)

В противном случае напишите свой собственный метод toString, это обычно достаточно тривиально...