【问题标题】:Is there any limitation on the pattern matching number of scala?scala的模式匹配数量有什么限制吗?
【发布时间】:2012-03-19 11:35:57
【问题描述】:

我在 scala 中遇到了一个奇怪的模式匹配问题。下面的代码会报出编译错误。但是如果我删除一个 case 语句,它将成功编译。所以有两件事让我感到困惑。一是看起来scala的最大模式匹配数是9。另一件事是错误消息,我在这个项目中没有使用sbt,我在另一个项目中使用它。任何人都可以帮助我吗?

SBT 构建器在编译您的项目时崩溃。这是一个错误 Scala 编译器或 SBT。检查错误日志以了解详细信息。错误 消息是:ch.epfl.lamp.fjbg.JCode$OffsetTooBigException: offset too 大到适合 16 位:38092 scala Unknown Scala Problem

 def main(args: Array[String]) {
    val list = List(1, 2, 3)

    import scala.collection.JavaConversions._
    val pattern_1 = """1""".r
    val pattern_2 = """1""".r
    val pattern_3 = """1""".r
    val pattern_4 = """1""".r
    val pattern_5 = """1""".r
    val pattern_6 = """1""".r
    val pattern_7 = """1""".r
    val pattern_8 = """1""".r
    val pattern_9 = """1""".r
    val pattern_10 = """1""".r

    "ffd,fa".split(",") foreach {
      case pattern_1() =>
      case pattern_2() =>
      case pattern_3() =>
      case pattern_4() =>
      case pattern_5() =>
      case pattern_6() =>
      case pattern_7() =>
      case pattern_8() =>
      case pattern_9() =>
    }
  }

【问题讨论】:

    标签: scala pattern-matching


    【解决方案1】:

    是的。案件数量有限制。不过,我相信 2.10 中的新 virtual pattern matcher 会解决这个问题。

    解决此问题的最简单方法是将模式匹配拆分为多个嵌套级别的匹配。

    【讨论】:

    • 确认用最新的夜间版本修复。
    猜你喜欢
    • 1970-01-01
    • 2015-06-07
    • 2021-12-28
    • 2021-07-09
    • 1970-01-01
    • 1970-01-01
    • 2016-05-17
    • 2021-12-17
    相关资源
    最近更新 更多