J'essaie de faire correspondre une valeur enum convertie en une chaîne contenue dans une collection. Voici le code:Quelle est la manière la plus idiomatique de Scala de faire correspondre un motif sur une Seq contenant des valeurs enum converties en chaînes?
object Foo extends Enumeration {
val ONE = Value("ONE")
val TWO = Value("TWO")
}
def check(seq: Seq[String]): Unit = seq match {
case Seq(Foo.ONE.toString) => println("match")
case _ => println("no match")
}
Il en résulte une erreur de compilation:
error: stable identifier required, but Foo.ONE.toString found.
case Seq(Foo.ONE.toString) => println("match")
Quelle est la bonne façon d'utiliser mes Foo valeurs énumérées comme éléments de mon modèle correspondant à des déclarations de cas?
Vous ne pouvez pas appliquer de fonction à l'intérieur d'un motif (il y a '.toString'). – cchantep
Voulez-vous savoir si les éléments _all_ des 'Seq()' sont des chaînes de valeurs 'Foo', ou simplement _any_ d'entre eux? Avez-vous besoin de rapporter quels éléments correspondent, ou est-ce simplement un booléen (c'est-à-dire match trouvé/non trouvé)? – jwvh
@cchantep l'a cloué sur la tête, j'aurais dû faire une correspondance sur 'case Seq (Foo.ONE)'. Merci à tous pour votre participation! – nmurthy