在Scala中,我对这个相当自指的错误消息感到非常困惑:
我希望能够将某人始终转换为其自身类型。
我认为
另外,尝试打印
更多细节
尽管我是一个Scala新手,但也许
问题:这个错误消息的原因是什么,真正的问题是什么,如何获取scala.tools.nsc.[interpreter]的可工作示例代码?谢谢。
java.lang.ClassCastException: FOO cannot be cast to FOO
我希望能够将某人始终转换为其自身类型。
语境
我正在尝试运行包装在Scala编译器周围的以下代码,位于http://code.google.com/p/rooscaloo/source/browse/trunk/rooscaloo/src/org/darevay/rooscaloo/Interpreter.scala。不幸的是,当我执行以下操作时,Scala会说ResultHolder不能转换为ResultHolder
:
import org.darevay.rooscaloo._
println(new Interpreter().eval("2"))
我认为
println
应该接受Any
。 实际上,Interpreter.eval返回一个ResultHolder
类型,因此ResultHolder.value
应该等于2
。另外,尝试打印
.value
时会出错:(fragment of Test.scala):3: error: value value is not a member of Any
println(new Interpreter().eval("2").value)
更多细节
java.lang.reflect.InvocationTargetException
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
...
Caused by: java.lang.ClassCastException: org.darevay.rooscaloo.ResultHolder cannot be cast to org.darevay.rooscaloo.ResultHolder
at binder0$.set(<script>:1)
at binder0.set(<script>)
... 24 more (unsure how to print them)
尽管我是一个Scala新手,但也许
scala.tools.nsc.interpreter
包的内部机制binder
正在尝试做一些奇怪的事情。我正在使用scala Test.scala
命令调用脚本。问题:这个错误消息的原因是什么,真正的问题是什么,如何获取scala.tools.nsc.[interpreter]的可工作示例代码?谢谢。
org.darevay
不在类路径中有关。我根本没有遇到你的错误,所以如果你能提供更多细节来重现(Scala版本,采取了哪些步骤),那将会很有帮助。 - Daniel C. Sobral