2012-03-19 11 views
5

Ho riscontrato uno strano problema di corrispondenza del modello in scala. Il seguente codice si lamenterà dell'errore di compilazione. Ma se rimuovo una dichiarazione caso, verrà compilata correttamente. Quindi ci sono due cose che mi hanno confuso. Uno è che sembra che il massimo numero di pattern matching di scala sia 9. Un'altra cosa è il messaggio di errore, non ho usato sbt in questo progetto, lo uso in un altro progetto. Qualcuno può aiutarmi ?Esiste qualche limite sul numero di scala di corrispondenza del modello?

Il builder SBT si è bloccato durante la compilazione del progetto. Questo è un bug nel compilatore di Scala o SBT. Controlla il registro Erorr per i dettagli. Il messaggio di errore è : ch.epfl.lamp.fjbg.JCode $ OffsetTooBigException: offset troppo grande per entrare in 16 bit: 38092 Scala Unknown Scala Problema

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

risposta

10

Sì. C'è un limite al numero di casi. Tuttavia, credo che questo verrà risolto con il nuovo virtual pattern matcher in 2.10.

Il modo più semplice per risolvere il problema consiste nel suddividere il pattern match in più livelli nidificati di corrispondenze.

+0

Confermato con l'ultima build notturna. – rxg

Problemi correlati