假设我有一个看起来像这样的类:
class Foo(Prop1:Int, Prop2:Int, Prop3:Int)
{
..
}
我想创建一个函数,从
Foo
列表中获取某些任意属性的最大值。 s。像这样:
def getMax(Foos:List[Foo], Property:??) = Foos.map(_.Property).sort(_ > _).head
如果我调用
getMax(myFooList, Prop1)
,它将返回最高值 Prop1
来自此列表 Foo
s。我的问题是,我怎样才能做到这一点?我想我可以为
Property
创建某种枚举(scala 等效项)并做一个 match
然后运行 map
在适当的属性上,但这似乎是很多工作 - 我每次都必须扩展我的枚举和函数 Foo
被重构。另外,不是那么重要,但是有没有比我所做的更好的方法来获取列表的最大值?
最佳答案
您应该使用标准 maxBy
方法:
List(("a", 2), ("b", 3), ("c", 4)).maxBy(_._2)
=> (String, Int) = (c,4)
关于scala - 如何从 Scala 的列表中获取任意属性的最大值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1446214/