Scala: pentru înțelegerea cu Opțiune

0

Problema

Am Optiunea de a o Urm de unele elemente:

Option[Seq[MyItem]]

MyItem are un câmp "descriere"

Am nevoie de pentru a afla dacă unul dintre elemente are o anumită descriere.

Cum poate fi făcut folosind pentru înțelegerea?

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

Cel mai bun răspuns

2

Dacă doriți pentru a testa dacă orice element de Option[Seq[MyItem]] are o anumită descriere, atunci puteți face acest lucru.

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

Dacă aveți într-adevăr nevoie de o soluție care folosește for atunci nu te pot ajuta :)

2021-11-23 12:20:57

De fapt, fac acest lucru în prezent. Dar mă tem lizibilitatea nu este așa de bun, așa că am fost în căutarea pentru comprehensions. Dar se pare că pentru comprehensions nu funcționează atunci când primul generator are Opțiunea de a face cu.
Mandroid

Lizibilitatea depinde de public, dar pentru un competente Scala programator exists versiunea este foarte clar. for este adecvat pentru prelucrare o colecție în alta, dar această sarcină este de a produce o singură valoare dintr-o colecție. Pentru asta ai nevoie de un fold sau collect operațiunea, dar care nu va fi mai limpede decât exists.
Tim

Un singur pentru-înțelegere pe Option[Seq[MyItem]] nu va funcționa. Cu toate acestea, se va lucra pe Seq[Option[MyItem]]. Doar folosi există\ori\colecta după cum sa menționat de @Tim
gatear

În alte limbi

Această pagină este în alte limbi

Русский
..................................................................................................................
Italiano
..................................................................................................................
Polski
..................................................................................................................
한국어
..................................................................................................................
हिन्दी
..................................................................................................................
Français
..................................................................................................................
Türk
..................................................................................................................
Česk
..................................................................................................................
Português
..................................................................................................................
ไทย
..................................................................................................................
中文
..................................................................................................................
Español
..................................................................................................................
Slovenský
..................................................................................................................