2012-03-19 23 views
5

我遇到了scala中模式匹配的奇怪問題。以下代碼會報告編譯錯誤。但是如果我刪除一個case語句,它會成功編譯。所以有兩件事讓我困惑。一個是它看起來像scala的最大模式匹配數是9.另一個是錯誤消息,我沒有在這個項目中使用sbt,我在另一個項目中使用它。任何人都可以幫助我?scala的模式匹配數是否有限制?

SBT編譯器在編譯項目時崩潰了。這是Scala編譯器或SBT的 中的一個錯誤。詳細信息請查閱Erorr日誌。錯誤 消息是:ch.epfl.lamp.fjbg.JCode $ OffsetTooBigException:偏移過大 以適應16位:38092斯卡拉未知斯卡拉問題

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

回答

10

是。案件數量有限。不過,我相信這將在2.10中用新的virtual pattern matcher來解決。

解決問題的最簡單方法就是將模式匹配分成多個嵌套級別的匹配。

+0

確認已修復最新每晚構建。 – rxg 2012-04-28 05:55:41