web-dev-qa-db-fra.com

Correspondance de modèle pour vérifier si la chaîne est nulle ou vide

Est-il possible de vérifier si la chaîne est nulle ou vide en utilisant match?

J'essaie de faire quelque chose comme:

def sendToYahoo(message:Email) ={
  val clientConfiguration = new ClientService().getClientConfiguration()
  val messageId : Seq[Char] = message.identifier
  messageId match {
    case messageId.isEmpty => validate()
    case !messageId.isEmpty => //blabla
  }
}

Mais j'ai une erreur de compilation.

Merci d'avance.

14
placplacboom

Vous pouvez écrire une fonction simple comme:

def isEmpty(x: String) = Option(x).forall(_.isEmpty)

ou

def isEmpty(x: String) = x == null || x.isEmpty

Vous pouvez également couper la chaîne si vous considérez " " être également vide.

def isEmpty(x: String) = x == null || x.trim.isEmpty

puis l'utiliser

val messageId = message.identifier
messageId match {
  case id if isEmpty(id) => validate()
  case id => // blabla
}

ou sans match

if (isEmpty(messageId)) {
  validate()
} else {
  // blabla
}

ou même

object EmptyString {
  def unapply(s: String): Option[String] =
    if (s == null || s.trim.isEmpty) Some(s) else None
}

message.identifier match {
  case EmptyString(s) => validate()
  case _ => // blabla
}
31
Gabriele Petronella
def isNullOrEmpty[T](s: Seq[T]) = s match {
     case null => true
     case Seq() => true
     case _ => false
}
8
Lee