J'ai un Seq[String]
dans Scala, et si le Seq
contient certains String
s, j'ajoute un message pertinent à une autre liste.Scala alternative à la série d'instructions if qui s'ajoutent à une liste?
Existe-t-il une façon plus «scalaesque» de faire cela, plutôt qu'une série d'instructions if qui s'ajoutent à une liste comme ci-dessous?
val result = new ListBuffer[Err]()
val malformedParamNames = // A Seq[String]
if (malformedParamNames.contains("$top")) result += IntegerMustBePositive("$top")
if (malformedParamNames.contains("$skip")) result += IntegerMustBePositive("$skip")
if (malformedParamNames.contains("modifiedDate")) result += FormatInvalid("modifiedDate", "yyyy-MM-dd")
...
result.toList
Merci, se sent comme cela est un peu plus difficile à lire et à comprendre que l'approche originale instruction if bien? – Rory
Je dirais que c'est plus facile à comprendre, mais YMMV. Dans l'approche if-statement, vous devez vous frayer un chemin à travers ce que fait chaque if pour comprendre que vous construisez une séquence basée sur le contenu de l'autre séquence, alors que la présence de map/flatten le rend clair dans Benoît –
Il y a une différence sémantique mineure entre ceci et l'exemple: il n'y aura pas d'éléments répétés dans le code de la question, alors qu'il pourrait y avoir dans cette solution. Si cela est significatif, result.toSet.toList sera déduplé. –