如何解决Kotlin - 与使用 start >= Instant && Instant <= end 相比,检查范围内的 Instant
例如,您想检查 Kotlin 中的 Instant 是否在其他两个 Instant 的开始和结束范围内,您可以简单地执行以下操作:
import java.time.Instant
val start = Instant.parse("2000-10-23T00:00:00Z");
val end = Instant.parse("2020-10-23T23:59:59Z");
val toTest = Instant.parse("2010-10-24T00:00:00Z");
if(toTest in start..end) println("Yes") else println("No")
我认为这很容易理解
您也可以按照标准方式编写以下内容来检查相同的内容:
import java.time.Instant
val start = Instant.parse("2000-10-23T00:00:00Z");
val end = Instant.parse("2020-10-23T23:59:59Z");
val toTest = Instant.parse("2020-10-24T00:00:00Z");
val result = start <= toTest && toTest <= end
if(result) println("Yes") else println("No")
我现在的问题是,范围解决方案在消耗的资源或额外开销方面是否存在差异。
出于某种原因使用标准方式进行检查是否更好,例如范围内的瞬间?
解决方法
范围解决方案在消耗的资源或额外开销方面是否存在差异?
范围解实际上是 creates a ClosedRange<Instant>
object,因为 ..
运算符。然后 in
做与第二个代码片段完全相同的事情 - start <= toTest && toTest <= end
。
所以范围解决方案确实做了一些额外的事情,但在几乎所有情况下,这一点额外的工作不会成为减慢应用程序速度的主要因素。没什么大不了的。
由于某种原因使用标准方式进行检查是否更好
是的,因为它更简洁易读。通过说“如果这个瞬间在这个范围”而不是“如果这个瞬间小于这个瞬间,大于那个瞬间。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。