Scala: для понимания с опцией

0

Вопрос

У меня есть возможность выбора некоторых предметов:

Option[Seq[MyItem]]

В моем элементе есть поле "описание"

Мне нужно выяснить, есть ли у одного из предметов конкретное описание.

Как это можно сделать, используя для понимания?

scala
2021-11-23 12:01:45
1

Лучший ответ

2

Если вы хотите проверить, есть ли какой-либо элемент Option[Seq[MyItem]] имеет конкретное описание, тогда вы можете это сделать.

opt.exists(_.exists(_.description == ???))

Если вам действительно нужно решение, которое использует for тогда я ничем не могу вам помочь :)

2021-11-23 12:20:57

На самом деле я делаю это в настоящее время. Но я боюсь, что читаемость не настолько хороша, поэтому я искал понимания. Но, похоже, для понимания не работает, когда у первого генератора есть возможность разобраться.
Mandroid

Читабельность зависит от аудитории, но для компетентного программиста Scala exists версия предельно ясна. for подходит для обработки одной коллекции в другую, но эта задача состоит в том, чтобы получить одно значение из коллекции. Для этого вам понадобится fold или collect операция, но это не будет яснее, чем exists.
Tim

Единое для понимания на Option[Seq[MyItem]] не получится. Однако это будет работать на Seq[Option[MyItem]]. Просто используйте exists\сложите\соберите, как упоминал @Tim
gatear

На других языках

Эта страница на других языках

Italiano
..................................................................................................................
Polski
..................................................................................................................
Română
..................................................................................................................
한국어
..................................................................................................................
हिन्दी
..................................................................................................................
Français
..................................................................................................................
Türk
..................................................................................................................
Česk
..................................................................................................................
Português
..................................................................................................................
ไทย
..................................................................................................................
中文
..................................................................................................................
Español
..................................................................................................................
Slovenský
..................................................................................................................