Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/scala/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
scala 2.9.1中Set4的奇怪行为?_Scala_Migration_Scala 2.8_Scala 2.9 - Fatal编程技术网

scala 2.9.1中Set4的奇怪行为?

scala 2.9.1中Set4的奇怪行为?,scala,migration,scala-2.8,scala-2.9,Scala,Migration,Scala 2.8,Scala 2.9,从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.bac

从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)客户端虚拟机,Java 1.6.0_26)。
类Set3和Set2也会发生同样的情况。
这些是已知的问题吗
或者,可能是我做错了什么?
在scala 2.8.1控制台中,它工作并返回:


我必须将这些报告为bug吗?

是。这是一个编译器错误,请继续报告。

(已在2.10上验证。不要忘了再次在此处发布问题编号:D)谢谢!如果我想参与解决SI bug,我必须如何开始?如果你真的觉得你可以做编译器黑客,试着调试这个问题,就像它是你的项目中的一个bug一样,并将结果作为注释发布到线程中。如果你想写一个更有用的bug报告,你可以从给出完整的堆栈跟踪开始,验证当前快照上的错误是否为当前错误-或者至少告诉作者它已被某人验证。另外,我觉得信息应该在bug报告中给出,而不是通过链接到这个站点。提取所有相关信息(例如,它在Scala 2.8.1上工作),并且仅提取该信息。另请参见:最后一种可能性是,您也可以开始在这个repo()上使用git-bisect来发现bug是何时引入的。但是这已经是相当多的工作了。你直接使用
Set4
有什么原因吗?是的,我想要一个具有四个整数的键,这将经常用于Set操作(as |,&,&,&~),因为它想要一个具有优化实现的对象。
Set(1,2,3,4)。isInstanceOf[collection.immutable.Set.Set4[Int]]==true
这已经自动发生了。很酷,谢谢,效果很好。如果没有直接调用的理由,为什么我们可以将Set2、Set3和Set4导入scope并直接使用它们呢?我想不出一个,除了更少的方法转发:-)
res0: collection.immutable.Set.Set4[Int] = Set(1,2,3,4)