scala的模式匹配数量是否有任何限制?

时间:2012-03-19 11:35:58

标签: scala pattern-matching

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

  

SBT构建器在编译项目时崩溃了。这是一个错误   Scala编译器或SBT。检查Erorr日志以获取详细信息。错误   消息是:ch.epfl.lamp.fjbg.JCode $ OffsetTooBigException:offset too   大到16位:38092 scala未知Scala问题

 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() =>
    }
  }

1 个答案:

答案 0 :(得分:10)

是。案件数量有限。但是,我相信这将通过2.10中的新virtual pattern matcher修复。

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