Scala 2.9 REPL的settings.maxPrintString是什么意思?

18

我想在Scala REPL中禁用字符串值的截断。

以下线程建议输入 settings.maxPrintString = 0:

如何强制解释器显示完整的堆栈跟踪?

不幸的是,这在Scala 2.9中似乎无效:

Welcome to Scala version 2.9.1.final (Java HotSpot(TM) 64-Bit Server VM, Java 1.6.0_29).
Type in expressions to have them evaluated.
Type :help for more information.

scala> settings.maxPrintString = 0
<console>:10: error: not found: value settings
val $ires0 = settings.maxPrintString
             ^
<console>:7: error: not found: value settings
       settings.maxPrintString = 0
       ^

我需要导入什么吗?

我尝试了:power,它使settings可用,但似乎不支持maxPrintString

scala> :power
** Power User mode enabled - BEEP BOOP SPIZ **
** :phase has been set to 'typer'.          **
** scala.tools.nsc._ has been imported      **
** global._ and definitions._ also imported **
** Try  :help,  vals.<tab>,  power.<tab>    **

scala> settings
res0: scala.tools.nsc.Settings = 
Settings {
  -d = .
  -Yrich-exceptions = true
  -classpath = bin:lib/*
  -encoding = UTF-8
}


scala> settings.maxPrintString = 0
<console>:31: error: value maxPrintString is not a member of scala.tools.nsc.Settings
val $ires9 = settings.maxPrintString
                      ^
<console>:28: error: value maxPrintString is not a member of scala.tools.nsc.Settings
       settings.maxPrintString = 0

我看到 scala.tools.nsc.InterpreterSettings.maxPrintString 存在,但我不确定如何获取一个合适的 InterpreterSettings 实例来进行修改。

1个回答

26
  ~/code/scala scala29
Welcome to Scala version 2.9.1.final (Java HotSpot(TM) 64-Bit Server VM, Java 1.6.0_29).
Type in expressions to have them evaluated.
Type :help for more information.

scala> :power
** Power User mode enabled - BEEP BOOP SPIZ **
** :phase has been set to 'typer'.          **
** scala.tools.nsc._ has been imported      **
** global._ and definitions._ also imported **
** Try  :help,  vals.<tab>,  power.<tab>    **

    scala> vals.isettings.maxPrintString
maxPrintString     maxPrintString_=   

scala> vals.isettings.maxPrintString = 10000
vals.isettings.maxPrintString: Int = 10000
或者
$ scala -uniqid -Xprint:typer -Yshow-syms -Dscala.repl.maxprintstring=64000

样例输出将显示截断而不是上限。


谢谢retronym!我应该尝试它所说的尝试!我现在看到设置为0似乎真的意味着零。这些天有没有办法设置为无限大,或者你只需要选择一个大数字,就像你上面做的那样(我尝试了-1,但没有成功)? - mrg
1
没关系。Int.MaxValue就可以了,而且有很好的Ctrl-R支持,我实际上不需要经常输入它。或者我可以使用-i,配合-Yrepl-sync解决方案,这样它就不会挂起。 - mrg
也适用于Scala 2.10.3 :) - Sudheer Aedama

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接