Scala REPL усекает вывод - PullRequest
       33

Scala REPL усекает вывод

0 голосов
/ 23 апреля 2020

Я хотел бы знать, есть ли способ избежать того, что 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
...

Я хотел бы посмотреть все содержимое.

Заранее спасибо.

1 Ответ

3 голосов
/ 24 апреля 2020

Согласно source и retronym

  /** 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

, где

val maxPrintString = int("scala.repl.maxprintstring")

, поэтому начинайте REPL, как это так

scala -Dscala.repl.maxprintstring=0

не имеет усечения.


Обращаясь к комментарию, intp.isettings, кажется, был удален в Scala 2.13 с помощью REPL: отделить пользовательский интерфейс (оболочку) от компилятора [ ci: только последний] # 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

, следовательно, в Scala 2.13 используется -Dscala.repl.maxprintstring подход, однако настройка изнутри REPL должна работать до-2.13

scala> $intp.isettings.maxPrintString = 0
...