Scala REPL 截断输出

Che*_*ema 1 scala truncate environment-variables scala-repl

我想知道是否有任何方法可以避免 Scala REPL 通过设置环境变量或其他方式来截断输出?

例子

scala> typeOf[Iterator[_]].members.mkString("\n")
res6: String =
override def toString(): String
def toStream: scala.collection.immutable.Stream[A]
def toIterator: Iterator[A]
def toTraversable: Traversable[A]
def sameElements: <?>
def copyToArray[B >: A](xs: Array[B],start: Int,len: Int): Unit
def patch: <?>
def duplicate: <?>
def length: <?>
def sliding$default$2: <?>
def sliding: <?>
def grouped: <?>
class GroupedIterator extends
def buffered: <?>
def indexOf: <?>
def indexOf: <?>
def indexWhere: <?>
def indexWhere: <?>
def find(p: A => Boolean): Option[A]
def contains: <?>
def exists(p: A => Boolean): Boolean
...
Run Code Online (Sandbox Code Playgroud)

我想看看所有的内容。

提前致谢。

Mar*_*lic 5

根据来源反义词

  /** The maximum length of toString to use when printing the result
    *  of an evaluation.  0 means no maximum.  If a printout requires
    *  more than this number of characters, then the printout is
    *  truncated.
    */
  var maxPrintString = config.maxPrintString.option getOrElse 800
Run Code Online (Sandbox Code Playgroud)

在哪里

val maxPrintString = int("scala.repl.maxprintstring")
Run Code Online (Sandbox Code Playgroud)

因此像这样启动 REPL

scala -Dscala.repl.maxprintstring=0
Run Code Online (Sandbox Code Playgroud)

没有截断。


解决评论,intp.isettings似乎已在 Scala 2.13 中被REPL删除:将 UI (shell) 与编译器分离 [ci: last-only] #5903。存在TODO声明:

  // TODO bring back access to shell features from the interpreter?
  // The repl backend has now cut its ties to the shell, except for the ReplReporter interface
  // Before, we gave the user access to: repl, reader, isettings (poor name), completion and history.
  // We could bring back some of this functionality if desired by adding it to ReplReporter
Run Code Online (Sandbox Code Playgroud)

因此在 Scala 2.13 中使用-Dscala.repl.maxprintstring方法,但是从 REPL 内部设置应该在 2.13 之前工作

scala> $intp.isettings.maxPrintString = 0
Run Code Online (Sandbox Code Playgroud)

  • 感谢您的回复,所以我可以执行=&gt; scala&gt; :power ,然后=&gt; vals.isetings.maxPrintString = Int.MaxValue, vals.isetings.maxPrintString: Int = 2147483647。非常感谢。 (2认同)