首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Instant上使用排序

在Instant上使用排序
EN

Stack Overflow用户
提问于 2021-01-27 05:38:32
回答 2查看 104关注 0票数 0

我可以用排序来订购Instant吗?

我目前使用的顺序如下:

代码语言:javascript
复制
MyRuleEngine(Equals).eval(Instant.now(), Instant.now().plusSeconds(1))(Ordering.by(_.toEpochMilli)) shouldBe false

但它可能会抛出异常(@throws ArithmeticException if numeric overflow occurs) --还有其他建议吗?我想根据瞬间的时间线位置进行排序。

Im使用以下函数:

代码语言:javascript
复制
 def eval[T](checkedValue: T, checkedWithValue: T)(ord: Ordering[T]) : Boolean 

我正在寻找一个如下的解决方案:

代码语言:javascript
复制
MyRuleEngine(GreaterThan).eval("B", "A")(scala.math.Ordering.String) shouldBe true
MyRuleEngine(GreaterThan).eval(10, 0)(scala.math.Ordering.Int) shouldBe true
MyRuleEngine(Equals).eval(true, true)(scala.math.Ordering.Boolean) shouldBe true

使用2.12.8

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2021-01-27 15:37:15

Ordering[String]Ordering[Int]不同的是,Scala没有显式的valobjectOrdering[Instant]。Scala编译器根据Instant在Java语言中扩展了Comparable这一事实,在您隐式请求它时按需生成一个。

如果你想使用Scala提供的Ordering[Instant],你必须调用隐式的并让编译器为你生成它:

代码语言:javascript
复制
MyRuleEngine(rule).eval(instant1, instant2)(Ordering[Instant])

代码语言:javascript
复制
MyRuleEngine(rule).eval(instant1, instant2)(implicitly)

您还可以使用与编译器相同的方式手动创建Ordering[Instant]

代码语言:javascript
复制
MyRuleEngine(rule).eval(instant1, instant2)(Ordering.ordered(identity))
票数 2
EN

Stack Overflow用户

发布于 2021-01-27 06:12:36

您可以通过以下方式调用标准的隐式Ordering[Instant]

代码语言:javascript
复制
implicit val instantOrdering: Ordering[Instant] = Ordering[Instant]

这将调用Ordering上的apply方法,该方法根据Instant扩展java.lang.Comparable[Instant]的事实调用从LowPriorityOrderingImplicits特征( Ordering伴生对象扩展的特征)中派生的实例。

您可以通过以下方式直接派生InstantOrdering实例:

代码语言:javascript
复制
val instantOrdering = Ordering.ordered[Instant]

Ordering.ordered适用于扩展Comparable[T]的任何类型的T

您还可以使用以下命令定义功能等效的实例

代码语言:javascript
复制
val instantOrdering: Ordering[Instant] = Ordering.fromLessThan[Instant] { (x, y) => x.isBefore(y) }
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65909648

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档