【发布时间】:2017-01-23 18:38:27
【问题描述】:
下面的代码:
scala> class A {
| def hi = "Hello from A"
| override def toString = getClass.getName
| }
defined class A
scala> val a = new A()
a: A = A
scala> a.toString
res10: String = A
scala> println(s"${a.toString}")
$line31.$read$$iw$$iw$A
使用a.toString 表达式时打印正常,而不是使用println(s"${a.toString}") 时。问题是getClass.getName。在其他情况下效果很好。
提前感谢您的帮助
【问题讨论】:
-
这个问题只存在于 Scala repl。在 Ammonite repl 上一切正常
-
菊石 REPL 输出
scala> class A { override def toString = getClass.getName } defined class A scala> val a = new A() a: A = $sess.cmd0$A scala> a.toString res2: String = "$sess.cmd0$A" scala> println(s"""${a.toString}""") $sess.cmd0$A -
这绝对看起来像一个 repl 警告
-
是的......问题是 REPL......这是一个问题,因为它看起来不自然,结果也不是预期的
-
如果我们将此代码作为在线程序 (scala myprog.scala) 运行,我们会得到预期的结果。所以问题出在 REPL class A { override def toString: String = getClass.getName } object Date { def main(args: Array[String]) { println(new A().toString) } }