Параметризованное регулярное выражение для сопоставления с образцом - PullRequest
3 голосов
/ 14 сентября 2011

Можно ли сопоставить шаблон регулярного выражения, который возвращается из функции?Могу ли я сделать что-то подобное?

def pattern(prefix: String) = (prefix + "_(\\w+)").r

val x = something match {
  case pattern("a")(key) => "AAAA" + key
  case pattern("b")(key) => "BBBB" + key
}

Я не могу скомпилировать приведенный выше код.Следующий снимок консоли показывает ошибку, которую я получаю.Что я делаю неправильно?

scala> def pattern(prefix: String) = (prefix + "_(\\w+)").r
pattern: (prefix: String)scala.util.matching.Regex

scala> def f(s:String) = s match {
     | case pattern("a")(x) => s+x+"AAAAA"
<console>:2: error: '=>' expected but '(' found.
       case pattern("a")(x) => s+x+"AAAAA"
                        ^

1 Ответ

3 голосов
/ 14 сентября 2011

Этот синтаксис не поддерживается Scala, вы должны объявить экстрактор, прежде чем использовать его. Смотрите мой предыдущий вопрос по этой теме .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...