所以我正在尝试用 Scala编写一个战斗代码播放器。在战斗代码中,某些类是不允许的,如果您尝试访问它们,则会出现运行时异常。当我使用Array.fill函数时,我从战斗代码服务器收到一条消息,说[java] Illegal class: scala/reflect/Manifest$
. 这是违规行:
val g_score = Array.fill[Int](rc.getMapWidth(), rc.getMapHeight())(0)
ClassManifest
该方法采用具有以下文档的隐式参数:
A ClassManifest[T] is an opaque descriptor for type T. It is used by the compiler
to preserve information necessary for instantiating Arrays in those cases where
the element type is unknown at compile time.
但我在编译时确实知道数组元素的类型,如上所示,我明确声明它们将是Int
. 有没有办法避免这种情况?要解决方法,我编写了自己的Array.fill
. 这似乎是一个黑客。顺便说一句,Scala 有真正的二维数组吗? Array.fill
似乎返回一个Array[Array[T]]
这是我发现自己写的唯一方法。这似乎也不优雅。
编辑:使用 Scala 2.9.1