【发布时间】:2011-09-15 13:06:23
【问题描述】:
从 2.8.1 迁移到 2.9.1 发现了有趣的事情。 试图在控制台中写这个:
>>import collection.immutable.Set.Set4
>>new Set4[Int](1,2,3,4)
它给出:
java.lang.Error: Unexpected New
at scala.tools.nsc.symtab.SymbolTable.abort(SymbolTable.scala:34)
at scala.tools.nsc.backend.icode.GenICode$ICodePhase.scala$tools$nsc$bac
..........................
That entry seems to have slain the compiler. Shall I replayscala:660)
your session? I can re-run each line except the last one.reach(ListBuffer.scala:
[y/n]?
我使用的是 Scala 版本 2.9.1.final(Java HotSpot(TM) 客户端 VM,Java 1.6.0_26)。
Set3 和 Set2 类也会发生同样的情况。
这些是已知问题吗?
或者,也许,我做错了什么?
在 scala 2.8.1 控制台中它可以工作,并返回:
res0: collection.immutable.Set.Set4[Int] = Set(1,2,3,4)
我必须将这些作为错误报告吗?
【问题讨论】:
-
你有理由直接使用
Set4吗? -
是的,我想要一个有四个整数的键,它将经常与 Set 操作一起使用(如 |、&、&~),因为它想要一个具有优化实现的对象。
-
Set(1,2,3,4).isInstanceOf[collection.immutable.Set.Set4[Int]] == true这已经自动发生了。 -
酷,谢谢,完美。如果没有直接调用的理由,为什么我们可以导入 Set2、Set3 和 Set4 到作用域并直接使用它们?
-
我想不出一个,除了方法转发少:-)
标签: scala migration scala-2.8 scala-2.9