Я перехожу к компетенции Cats Validated, и у меня возникает проблема с конкатенацией моего накопителя ошибок.
Я получаю эту ошибку
Error:(88, 17) discarded non-Unit value
errorList ++= errors
Я не знаю, как решитьэта ошибка.
Мой код:
def checkValidity(types: List[Type]): ValidationResult[Boolean] = {
val errorList: mutable.MutableList[String] = mutable.MutableList.empty
schemas.foreach { schema =>
for (errors <- schema.checkValidity(types).invalid[List[String]]) {
errorList ++= errors
}
}
}
Спасибо за вашу помощь.
Полный код
У меня два делакласс в двух разных файлах:
case class Domain(
name: String,
directory: String,
metadata: Option[Metadata] = None,
schemas: List[Schema] = Nil,
comment: Option[String] = None,
extensions: Option[List[String]] = None,
ack: Option[String] = None
) {
case class Schema(
name: String,
pattern: Pattern,
attributes: List[Attribute],
metadata: Option[Metadata],
merge: Option[MergeOptions],
comment: Option[String],
presql: Option[List[String]],
postsql: Option[List[String]]
)
Я хочу проверить все ошибки и добавить ошибки в свой список аккумуляторов.В конце, если этот список пуст, я возвращаю Valid (true), иначе я возвращаю Invalid (myAccumulatorList)
Полный код функции в файле Domain.scala:
def checkValidity(types: List[Type]): ValidationResult[Boolean] = {
val errorList: mutable.MutableList[String] = mutable.MutableList.empty
// Check Domain name validity
val dbNamePattern = Pattern.compile("[a-zA-Z][a-zA-Z0-9_]{1,100}")
if (!dbNamePattern.matcher(name).matches())
errorList += s"Schema with name $name should respect the pattern ${dbNamePattern.pattern()}"
// Check Schema validity
schemas.foreach { schema =>
for (errors <- schema.checkValidity(types).invalid[List[String]]) {
errorList ++= errors
}
}
val duplicatesErrorMessage = "%s is defined %d times. A schema can only be defined once."
for (errors <- duplicates(schemas.map(_.name), duplicatesErrorMessage).invalid[List[String]]) {
errorList ++= errors
}
// TODO Check partition columns
// TODO Validate directory
val inputDir = File(this.directory)
if (!inputDir.exists) {
errorList += s"$directory not found"
}
if (errorList.nonEmpty)
Invalid(errorList.toList)
else
Valid(true)
}