如何使用argmax方法扩展Scala集合?
发布时间:2020-12-16 10:07:14 所属栏目:安全 来源:网络整理
导读:我想添加到有意义的所有集合,一个 argMax方法. 怎么做?使用含义? 解决方法 在Scala 2.8上,这有效: val list = List(1,2,3)def f(x: Int) = -xval argMax = list max (Ordering by f) 正如mkneissl所指出的,这不会返回最大点集.这是一个替代实现,并尝试减
我想添加到有意义的所有集合,一个
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) (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- Angularjs,使用data-ng-controller和ng-controller
- Bootstrap常用元素
- scala – 在specs2中,有条件地执行从函数返回的结果的子测试
- scala – 在Monad上实现`sequence`
- 使用 CXF 做 webservice 简单例子
- Bash:如何从数字中提取数字
- [译] 如何对 Angular Controller 进行单元测试
- ocaml – 如何正确使用nix-shell并避免“转储非常大的路径”
- symfony – 如何将sonata admin bundle与twitter bootstrap
- 0003 -- bootstrap 按钮的使用。