В настоящее время с Scala 2.11 использование выражения регулярного выражения в сопоставлении с шаблоном не рекомендуется, если вы не согласны с Seq [Char] или Match, существует ли альтернативный подход. В настоящее время я реализовал getValueV2 с стратегией Seq [Char] в следующем примере, хотя он многословен и не выглядит достаточно хорошим.Устаревший - шаблон регулярного выражения Scala
Какие предложения у вас есть для замены регулярного выражения,
trait MyHelper {
//param Regex is deprecated
def getValue(option: Option[scala.Any]): String = {
val param = """(?:String|Boolean)Option\((.*)\)""".r
option.getOrElse("") match {
case param(s) => s
case arr: Array[_] => arr.mkString("")
case _ => ""
}
}
def getValueV2(option: Option[scala.Any]): String = {
option.getOrElse("") match {
case s : String => s.toSeq match {
case p if p.endsWith(")") => p match {
case Seq('S', 't', 'r', 'i', 'n', 'g', 'O', 'p', 't', 'i', 'o', 'n', '(', [email protected]_*) => suffix.toString.substring(0, suffix.length -1)
case Seq('B', 'o', 'o', 'l', 'e', 'a', 'n', 'O', 'p', 't', 'i', 'o', 'n', '(', [email protected]_*) => suffix.toString.substring(0, suffix.length -1)
case _ => s
}
case _ => s
}
case arr: Array[_] => arr.mkString("")
case _ => ""
}
}
}
Я искал другую библиотеку под названием kantan.regex, но это, кажется, не имеют большого сообщества. Какой был бы лучший подход здесь, просто держитесь с регулярным выражением и игнорируйте устаревшие предупреждения?
Почти идеальный вариант, единственное исправление, которое я предлагаю, - это первый случай . _ => «" Должен быть case _ => str – raul782
. У вашего оригинала 'getValue' не было этого в качестве возможного результата, но я вижу теперь, когда он был добавлен в 'V2'. Отлично. Я уверен, что есть другие моды, которые помогут вам выполнить ваши требования. Дело в том, что вы можете (и должны) использовать шаблоны Regex не устаревшим способом. – jwvh
Достаточно честный, спасибо за помощь. – raul782