Vorausgesetzt, dass Seq.view
eine SeqView
zurückgibt, hätte ich erwartet Set.view
, um eine SetView
zurückgeben, aber keine solche Ansicht existiert; Set.view
gibt stattdessen IterableView
zurück.Warum hat Scala SeqView, aber nicht SetView?
Leider fehlen IterableView
einige Methoden wie contains
. Vergleichen Sie diese zum Beispiel:
Seq(1, 2, 3).view.map(_ * 2).contains(4) // returns true
Set(1, 2, 3).view.map(_ * 2).contains(4) // error
Gibt es einen besonderen Grund, warum keine SetView
Klasse existiert?
Gibt es auch einen Grund, warum Iterable
keine contains
Methode hat (vorausgesetzt, das ist im Grunde ein Sonderfall von finden)?
die Situation oben gegeben, eine bessere Alternative dazu ist es, wenn sie mit Datensätzen arbeiten (in anderen Worten, was ist die beste Praxis in Scala):
Set(1, 2, 3).view.map(_ * 2).find(_ == 4).isDefined
Über enthält: http://stackoverflow.com/questions/2925765/why-does-iterator-have-a-contains-method-but-iterable-does-not-in-scala-2-8 –
Nicht ganz allgemeine Alternative, aber 'Set (1, 2, 3) .existiert (x => x * 2 == 4)' –