私はScalaでSeq[String]
を持っていて、もしに特定のString
が含まれていれば、別のリストに関連するメッセージを追加します。リストに追加される一連のif文の代わりのScala?
私は以下のようにリストに追加された一連のif文ではなく、これを行うためのよりスケーラブルな方法がありますか?あなたには、いくつかのScalaの反復可能オブジェクトの砂糖を使用したい場合は
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
おかげで、感じていますか? – Rory
私はそれが理解しやすいと主張するだろうが、YMMV。 if文のアプローチでは、他のシーケンスの内容に基づいてシーケンスを構築していることを理解するためにそれぞれの作業を行う必要がありますが、map/flattenの存在によってその順序が明確になりますブノワ –
例と対比して、これとのマイナーな意味上の違いがあります。この解決策では、質問のコードに繰り返しの要素はありません。これが重要な場合は、result.toSet.toListが重複除外されます。 –