var_dump () в Scala - PullRequest
       1

var_dump () в Scala

16 голосов
/ 19 января 2011

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

Ответы [ 3 ]

8 голосов
/ 19 января 2011

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

(Примечание: здесь присутствует "I": Эрик Энгбрехт , также в 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 голосов
/ 19 января 2011

Возможно, вы захотите посмотреть ToStringBuilder в общем-lang, в частности ToStringBuilder.reflectionToString().

2 голосов
/ 19 января 2011

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

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...