/ / Как да направим съвпадение на модел на регекс във функция foreach в scala? - регекс, скала

Как да направя модел съвпадение на regex в foreach функция в скала? - регекс, скала

Не разбирам защо това не работи (тук имам две "без съвпадение"):

val a = "aaa".r
val b = "bbb".r

List("aaa", "bbb").foreach {
case a(t) => println(t)
case b(t) => println(t)
case _ => println("no match")
}

Отговори:

4 за отговор № 1

Предполага се, че променливата в скобите е групата за улавяне. Променете си реджекси на val a = "(aaa)".r; val b = "(bbb)".r, това "ще го накарам да направи това, което искате. Алтернативно, променете моделите на съвпадение:

List("aaa", "bbb").foreach {
case a() => println("aaa")
case b() => println("bbb")
case _ => println("no match")
}

1 за отговор № 2

Моделът ви не съдържа група за заснемане, трябва да поставите скоби около шаблона, който искате да заснемете, за да работи съвпадащият модел:

val a = "(aaa)".r
// a: scala.util.matching.Regex = (aaa)

val b = "(bbb)".r
// b: scala.util.matching.Regex = (bbb)

List("aaa", "bbb").foreach {
case b(t) => println(t)
case a(t) => println(t)
case _ => println("no match")
}

//aaa
//bbb