2012-03-19 17 views
5

私はスカラのパターンマッチングという奇妙な問題を抱えています。次のコードは、コンパイルエラーを発生させます。しかし、私は1つのケースステートメントを削除すると、それは正常にコンパイルされます。だから私を混乱させる2つのことがあります。 1つは、スカラの最大パターン一致数が9であるように見えるということです。もう1つはエラーメッセージです。私はこのプロジェクトでsbtを使用せず、別のプロジェクトでも使用します。誰でも私を助けることができますか?スカラのパターンマッチング数に制限はありますか?

プロジェクトのコンパイル中にSBTビルダーがクラッシュしました。これは ScalaコンパイラまたはSBTのバグです。詳細については、Erorrログを確認してください。エラー メッセージは次のとおりです。ch.epfl.lamp.fjbg.JCode $ OffsetTooBigException:38092スカーラ不明な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() => 
    } 
    } 

答えて

10

はい:16ビットに収まるように大きなオフセットすぎ 。症例数には限界があります。しかし、私はこれが2.10の新しいvirtual pattern matcherで修正されると信じています。

問題を回避する最も簡単な方法は、パターンマッチを複数のネストされた一致レベルに分割することです。

+0

最新の夜間ビルドで確定しました。 – rxg

関連する問題