安全迭代器.max

发布于 2024-12-02 08:13:54 字数 223 浏览 1 评论 0原文

是否有一个库提供像 Iterator.max 这样的函数,但返回一个 Option[A] 而不是 A 来解释可能的情况- 空迭代器?或者,是否有一个库提供类 PosInf[A] 或与 A 相邻的正无穷大?

(显然,这些工作都只是我自己做的繁重工作,但使用库几乎总是比复制代码更可取。)

Is there a library that offers a function like Iterator.max, but that returns an Option[A] rather than an A to account for possibly-empty iterators? Alternately, is there a library that offers a class PosInf[A] or so that adjoins a positive infinity to A?

(Obviously either of these is mere gruntwork to do myself, but using a library is almost always preferable to duplicating code.)

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

故事与诗 2024-12-09 08:13:55

我什么都不知道,但这很简单:

def maxOpt[T: Numeric](i: Iterator[T]) = if (i.hasNext) Some(i.max) else None

编辑:数字的要求太强了,排序就足够了:

def maxOpt[T: Ordering](i: Iterator[T]) = if (i.hasNext) Some(i.max) else None

如果您使用 isEmpty ,则应该适用于 TraversableOnce 的任何子类代码>

I'm not aware of anything but this is simple:

def maxOpt[T: Numeric](i: Iterator[T]) = if (i.hasNext) Some(i.max) else None

Edit: Numeric is too strong a requirement, Ordering is enough:

def maxOpt[T: Ordering](i: Iterator[T]) = if (i.hasNext) Some(i.max) else None

And if you use isEmpty is should work on any subclass of TraversableOnce

许仙没带伞 2024-12-09 08:13:54

scalazMA.最大值。用法:

import scalaz._; import Scalaz._

List(1, 2, 3).maximum == Some(3)

List.empty[Int].maximum == None

唯一的问题是这不能直接与迭代器一起使用,因此您必须使用 Stream (例如使用 Iterator.toStream

List(1, 2, 3).iterator.toStream.maximum = Some(3)

scalaz: MA.maximum. Usage:

import scalaz._; import Scalaz._

List(1, 2, 3).maximum == Some(3)

List.empty[Int].maximum == None

the only problem is that this does not work with Iterators directly, so you would have to use a Stream instead (e.g. using Iterator.toStream)

List(1, 2, 3).iterator.toStream.maximum = Some(3)
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文