这是一个scala bug还是我做错了什么

时间:2015-06-07 15:26:26

标签: scala

我有一些代码可以在scala 2.10中运行,但是因为' Assertion Error'在斯卡拉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中打破了吗?

由于

迪安

P.S。我确定这种风格不是斯卡拉精神,如果有更好的方法可以做任何我展示的事情,反馈很好,但请回答主要问题。

1 个答案:

答案 0 :(得分:1)

确实是scala bug - SI-9099

  

修复版本:Scala 2.11.6