Nehmen wir an, ich habe eine Klasse, die etwa so aussieht:
class Foo(Prop1:Int, Prop2:Int, Prop3:Int)
{
..
}
Und ich wollte eine Funktion erstellen, die den Maximalwert einer beliebigen Eigenschaft aus einer Liste von Foo
s.
Zum Beispiel so:
def getMax(Foos:List[Foo], Property:??) = Foos.map(_.Property).sort(_ > _).head
Wenn ich anrufe getMax(myFooList, Prop1)
wird der Wert des höchsten Prop1
aus dieser Liste von Foo
s.
Meine Frage ist, wie kann ich das bewerkstelligen? Ich schätze, ich könnte eine Art von Enum (das Scala-Äquivalent) für die Property
und machen eine match
und führen Sie dann die map
auf die entsprechende Eigenschaft, aber das scheint eine Menge Arbeit zu sein - ich müsste meine Aufzählung und die Funktion jedes Mal erweitern Foo
umgestaltet wird.
Auch, nicht so wichtig, aber gibt es einen besseren Weg, um den maximalen Wert einer Liste als zu greifen, was ich tat?