【问题标题】:Is this a scala bug or am I doing something wrong这是一个scala错误还是我做错了什么
【发布时间】:2015-06-21 00:19:41
【问题描述】:

我有一些代码可以在 scala 2.10 中运行,但在 scala 2.11 中出现“断言错误”而失败。我想要一些关于我是否是个白痴、是否发生了变化或 2.11 中是否存在错误的反馈(我知道这不太可能。)

这是一件简单的事情。我有一个读入的单词文件,这些字母分成一张地图。

for (token <- logData.getLines().flatMap(x => x.split("\\s+"))) {
        // Ignore empty lines which appear in the word count as ""
        if (token != "") {
            words += 1
            counts(token) += 1
            for (letters <- token.split("")) {
                if (isOrdinary(letters)) {
                    letterCounts(letters) += 1
                }
            }
        }
    }

读入字母并将其映射到 letterCounts 后,我现在想提取频率最高的字母。我尝试使用

val maxLetterCounts = fixedLetterCounts.values.max
    val highestLetter = letterCounts.filter((t) => t._2 == maxLetterCounts)

当它尝试运行过滤器时出现错误。 这在 scala 2.10 中有效,但在 scala 2.11 中我得到了

java.lang.AssertionError: assertion failed: List(value _2$mcI$sp, value _2$mcI$sp)
at scala.reflect.internal.Symbols$Symbol.suchThat(Symbols.scala:1916)
at scala.tools.nsc.transform.SpecializeTypes$$anon$2.matchingSymbolInPrefix$1(SpecializeTypes.scala:1460)
at scala.tools.nsc.transform.SpecializeTypes$$anon$2.transformSelect$1(SpecializeTypes.scala:1483)
at scala.tools.nsc.transform.SpecializeTypes$$anon$2.transform1(SpecializeTypes.scala:1579)
at scala.tools.nsc.transform.SpecializeTypes$$anon$2$$anonfun$transform$3.apply(SpecializeTypes.scala:1428)
at scala.tools.nsc.transform.SpecializeTypes$$anon$2$$anonfun$transform$3.apply(SpecializeTypes.scala:1428)
at scala.tools.nsc.transform.SpecializeTypes$$anon$2.reportError(SpecializeTypes.scala:1420)
at scala.tools.nsc.transform.SpecializeTypes$$anon$2.transform(SpecializeTypes.scala:1428)
at scala.tools.nsc.transform.SpecializeTypes$$anon$2.transform(SpecializeTypes.scala:1371)
at scala.reflect.internal.Trees$class.itransform(Trees.scala:1347)
at scala.reflect.internal.SymbolTable.itransform(SymbolTable.scala:16)
at scala.reflect.internal.SymbolTable.itransform(SymbolTable.scala:16)
at scala.reflect.api.Trees$Transformer.transform(Trees.scala:2555)
at scala.tools.nsc.transform.TypingTransformers$TypingTransformer.transform(TypingTransformers.scala:44)
at scala.tools.nsc.transform.SpecializeTypes$$anon$2.transform1(SpecializeTypes.scala:1712)
at scala.tools.nsc.transform.SpecializeTypes$$anon$2$$anonfun$transform$3.apply(SpecializeTypes.scala:1428)
at scala.tools.nsc.transform.SpecializeTypes$$anon$2$$anonfun$transform$3.apply(SpecializeTypes.scala:1428)
at scala.tools.nsc.transform.SpecializeTypes$$anon$2.reportError(SpecializeTypes.scala:1420)
at scala.tools.nsc.transform.SpecializeTypes$$anon$2.transform(SpecializeTypes.scala:1428)
at scala.tools.nsc.transform.SpecializeTypes$$anon$2.transformSelect$1(SpecializeTypes.scala:1467)
at scala.tools.nsc.transform.SpecializeTypes$$anon$2.transform1(SpecializeTypes.scala:1579)
at scala.tools.nsc.transform.SpecializeTypes$$anon$2$$anonfun$transform$3.apply(SpecializeTypes.scala:1428)
at scala.tools.nsc.transform.SpecializeTypes$$anon$2$$anonfun$transform$3.apply(SpecializeTypes.scala:1428)
at scala.tools.nsc.transform.SpecializeTypes$$anon$2.reportError(SpecializeTypes.scala:1420)
at scala.tools.nsc.transform.SpecializeTypes$$anon$2.transform(SpecializeTypes.scala:1428)
at scala.tools.nsc.transform.SpecializeTypes$$anon$2.transform(SpecializeTypes.scala:1371)
at scala.reflect.internal.Trees$class.itransform(Trees.scala:1347)
at scala.reflect.internal.SymbolTable.itransform(SymbolTable.scala:16)
at scala.reflect.internal.SymbolTable.itransform(SymbolTable.scala:16)
at scala.reflect.api.Trees$Transformer.transform(Trees.scala:2555)

我已经在某种程度上截断了错误。

知道为什么这会起作用并在 2.10 中返回我想要但在 2.11 中中断的地图吗?

谢谢

院长

附:我确信这种风格不符合 scala 精神,如果有更好的方法来做我展示的任何事情,反馈很好,但也请回答主要问题。

【问题讨论】:

  • 你能指出错误的确切位置吗?另外,你能添加失败的断言吗?
  • 这看起来有点眼熟,但我不记得细节了。您能否提供一个完整的工作示例并指定您的 2.11 版本?
  • 我添加了一个编辑来显示它失败的地方。过滤器尝试运行时失败。我不知道您所说的“失败的断言”是什么意思。错误消息紧跟在过滤器行之后,没有其他信息。
  • Travis,我会一起剪一些东西,明天做一个完整的版本。失败的是版本 2.11.5。

标签: scala


【解决方案1】:

确实是 scala 错误 - SI-9099

修复版本/秒:Scala 2.11.6

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2010-09-13
    • 1970-01-01
    • 1970-01-01
    • 2012-10-14
    • 1970-01-01
    • 1970-01-01
    • 2017-09-28
    • 1970-01-01
    相关资源
    最近更新 更多