Dato che Seq.view
restituisce un SeqView
, mi sarei aspettato Set.view
per restituire un SetView
, ma tale visualizzazione non esiste; Set.view
restituisce invece un IterableView
.Perché Scala ha SeqView ma non SetView?
Sfortunatamente, IterableView
mancano alcuni metodi, ad esempio contains
. Confronta questi, ad esempio:
Seq(1, 2, 3).view.map(_ * 2).contains(4) // returns true
Set(1, 2, 3).view.map(_ * 2).contains(4) // error
C'è un motivo particolare per cui non esiste alcuna classe SetView
?
Inoltre, c'è qualche ragione per cui Iterable
non ha un metodo contains
(dato che questo è fondamentalmente un caso speciale di ricerca)?
Data la situazione di cui sopra, v'è una migliore alternativa a questo quando si lavora con i set (in altre parole, qual è la migliore pratica in Scala):
Set(1, 2, 3).view.map(_ * 2).find(_ == 4).isDefined
Informazioni su contiene: http://stackoverflow.com/questions/2925765/why-does-iterator-have-a-contains-method-but-iterable-does-not-in-scala-2-8 –
Non proprio alternativa generale, ma 'Set (1, 2, 3) .exists (x => x * 2 == 4)' –