我想添加到有意义的所有集合,一个
argMax方法.
怎么做?使用含义?
怎么做?使用含义?
解决方法
在Scala 2.8上,这有效:
val list = List(1,2,3) def f(x: Int) = -x val argMax = list max (Ordering by f)
正如mkneissl所指出的,这不会返回最大点集.这是一个替代实现,并尝试减少对f的调用次数.如果对f的调用无关紧要,请参阅mkneissl’s answer.另外,请注意他的答案是curry,这提供了更好的类型推断.
def argMax[A,B: Ordering](input: Iterable[A],f: A => B) = { val fList = input map f val maxFList = fList.max input.view zip fList filter (_._2 == maxFList) map (_._1) toSet } scala> argMax(-2 to 2,(x: Int) => x * x) res15: scala.collection.immutable.Set[Int] = Set(-2,2)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。