【问题标题】:settings.maxPrintString for Scala 2.9 REPLScala 2.9 REPL 的 settings.maxPrintString
【发布时间】:2023-03-25 05:15:02
【问题描述】:

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

以下主题建议输入settings.maxPrintString = 0

How to force interpreter show complete stack trace?

不幸的是,这似乎不适用于 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 的适当实例以进行修改。

【问题讨论】:

    标签: scala read-eval-print-loop


    【解决方案1】:
      ~/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,但没有运气)
    • 没关系。 Int.MaxValue 会很好,并且有很好的 Ctrl-R 支持,我实际上不必经常输入它。或者我可以使用 -i 和 -Yrepl-sync 解决方法,这样它就不会挂起。
    • 在 Scala 2.10.3 中也可以使用 :)
    猜你喜欢
    • 2011-12-22
    • 1970-01-01
    • 1970-01-01
    • 2012-02-15
    • 1970-01-01
    • 1970-01-01
    • 2011-08-02
    • 2011-11-26
    • 2011-10-24
    相关资源
    最近更新 更多