Хороший способ проверки элементов в списке Scala - PullRequest
3 голосов
/ 14 мая 2019

Привет, у меня есть вопрос относительно проверки списка в Scala. У меня есть метод, который выглядит примерно так:

def validate(item: Item): Try[Unit] = {
   if (item.isValid) Success(())
   else Failure(new isNotValidException("not valid"))
}

Теперь я использую этот метод для проверки itemList: List[Item] следующим образом:

def listIsValid(list: List[Item]): Try[Unit] = {
  list
    .map(validate(_))
    .collectFirst{ case f @ Failure(_: Exception) => f }
    .getOrElse(Success(()))
}

Который я в конечном итоге хочу разрешить в один Try[Unit] (либо Успех, если все элементы действительны, либо Отказ, если хотя бы один элемент недействителен.

Это хороший способ проверить все элементы в списке? Или есть лучший способ проверки элементов в списках? Он должен быстро выйти из строя, и если один элемент выходит из строя, мне не нужно знать, являются ли другие элементы недействительными в то время. Проверка списка используется для понимания и в конечном итоге должна быть преобразована в один Try[Unit] снова

Ответы [ 2 ]

5 голосов
/ 14 мая 2019

я бы использовал метод exists в списках и написал бы этот метод следующим образом:

def listIsValid(list: List[Item]): Boolean = {
        list.exists(!_.isValid)
  }
3 голосов
/ 14 мая 2019

Если вы хотите проверить, соответствует ли каждый элемент последовательности предикату, который вы используете forall:

list.forall(_.isValid)

Для получения более подробной информации ознакомьтесь с полной документацией

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...