Scala REPL中对象的字符串表示形式

Mit*_*och 3 scala

有没有一种简单的方法将Scala对象转换为REPL中给出的字符串表示形式?例如,因为Array(2, 3, 5),我想得到字符串"Array(2, 3, 5)",因为Stream from 2,我想得到"Stream(2, ?)".

Dan*_*wak 5

REPL使用该toString方法生成其值的字符串表示形式.从而:

Array(1, 2, 3).toString      // => "Array(1, 2, 3)"
Run Code Online (Sandbox Code Playgroud)

这适用于所有版本的Scala(2.7,2.8等).

  • 不幸的是,在'Array`和`toString`周围有很多神奇的东西.`println`方法只是委托给`System.out.println`(在JVM上),因此结果就是`toString`的*Java*实现是针对该特定对象的.当Scala知道某些东西是`Array`时,它会拦截`toString`,但是当有问题的方法调用在Java代码中时,它不能这样做. (3认同)