【问题标题】:Strange behavior of Set4 in scala 2.9.1?scala 2.9.1 中 Set4 的奇怪行为?
【发布时间】: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


【解决方案1】:

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

【讨论】:

  • (在 2.10 验证。别忘了在这里再次发布问题编号:D)
  • 谢谢!如果我想参与解决 SI 错误,我必须如何开始?
  • 如果您想写一份更有帮助的错误报告,您可以从提供完整的堆栈跟踪开始,验证错误是否在当前快照上是最新的 - 或者至少告诉作者有人验证过。另外,我觉得应该在错误报告中中提供信息,而不是通过指向该站点的链接。提取所有相关信息(例如,它适用于 Scala 2.8.1),仅此而已。另见:stackoverflow.com/questions/240323/…
  • 最后一种可能性是,你也可以在这个 repo (github.com/scala/scala) 上开始使用 git bisect 来发现 bug 何时被引入。但这已经是一项相当大的工作了。
猜你喜欢
  • 2023-03-31
  • 2011-05-09
  • 1970-01-01
  • 2013-05-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多