Многие из методов в Option могут присутствовать не только для единообразия (с коллекциями), а не для их полезности, поскольку все они очень маленькие функции и поэтому не требуют больших усилий, но служат определенной цели, иих значение становится понятным, как только вы знакомы со структурой сбора (как часто говорят, Option подобен списку, который не может иметь более одного элемента).
forall проверяет свойство значения внутри опции.Если значения нет, проверка пройдена.Например, если при аренде автомобиля вам предоставляется один additionalDriver: Option[Person]
, вы можете сделать
additionalDriver.forall(_.hasDrivingLicense)
точно так же, как если бы было разрешено несколько дополнительных водителей и у вас был список.
toList может быть полезным преобразованием.Предположим, у вас есть опции: List [Option [T]], и вы хотите получить List [T] со значениями всех опций Some.Вы можете сделать
for(option <- options; value in option.toList) yield value
(или лучше options.flatMap(_.toList)
)