Есть ли какие-либо ограничения на количество совпадений с образцом скалы? - PullRequest
5 голосов
/ 19 марта 2012

Я сталкиваюсь со странной проблемой сопоставления с образцом в scala. Следующий код будет жаловаться на ошибку компиляции. Но если я удалю один оператор case, он будет успешно скомпилирован. Так что меня смущают две вещи. Во-первых, это выглядит так, как если бы максимальное число совпадений с образцом в scala равнялось 9. Другое - это сообщение об ошибке, я не использовал sbt в этом проекте, я использую его в другом проекте. Кто-нибудь может мне помочь?

Сбой SBT при компиляции вашего проекта. Это ошибка в компилятор Scala или SBT. Проверьте журнал Erorr для деталей. Ошибка сообщение: ch.epfl.lamp.fjbg.JCode $ OffsetTooBigException: смещение тоже большой для размещения в 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 Ответ

10 голосов
/ 19 марта 2012

Да. Существует ограничение на количество дел. Тем не менее, я считаю, что это будет исправлено с помощью нового виртуального сопоставителя шаблонов в версии 2.10.

Самый простой способ обойти эту проблему - просто разбить совпадение по шаблону на несколько вложенных уровней совпадений.

...