Ste*_*oom 3 validation scala list
嗨,我有一个关于在Scala中验证列表的问题。我有一个看起来像这样的方法:
def validate(item: Item): Try[Unit] = {
if (item.isValid) Success(())
else Failure(new isNotValidException("not valid"))
}
Run Code Online (Sandbox Code Playgroud)
现在我正在使用这种方法来验证itemList: List[Item]如下:
def listIsValid(list: List[Item]): Try[Unit] = {
list
.map(validate(_))
.collectFirst{ case f @ Failure(_: Exception) => f }
.getOrElse(Success(()))
}
Run Code Online (Sandbox Code Playgroud)
我最终想解决的问题Try[Unit](如果所有项目均有效,则为成功,如果至少一项无效,则为失败。
这是验证列表中所有项目的好方法吗?还是有更好的方法来验证列表中的项目?它应该很快就会失败,如果一项失败了,我就不需要知道当时其他项是否无效。列表验证用于的理解,最终需要Try[Unit]再次解析为单个
我会exists在Lists上使用该方法,并将此方法编写如下:
def listIsValid(list: List[Item]): Boolean = {
list.exists(!_.isValid)
}
Run Code Online (Sandbox Code Playgroud)