为什么 Dart 的 DateTime 对象不使用小于和大于运算符重写方法?



所以我注意到Dart相对于其他语言的独特能力之一是,您可以覆盖;基元";比较(<, >, <=, >=, ==(,以便实现您自己的方法。

现在,我还在查看DateTime类文档,以了解它是什么以及如何使用它,我注意到他们选择了命名方法DateTime.isBefore(DateTime other)DateTime.isAfter(DateTime other)。在人类/伪代码中,这些代码将转换为dateTime < otherdateTime > other,自然我想为什么不直接在Dart中实现呢?

我知道这可以使用扩展来完成,就像在这个DartPad中一样,毫无疑问,它完全按照预期工作,据我所知,没有办法知道扩展正在被使用。。。

但是为什么在开发DateTime对象时没有考虑重写运算符呢?或者,如果考虑了它,为什么不包括它

有几个原因,但主要是因为排序==不兼容。

如果两个DateTime对象具有相同的时间时区,则它们是相等的,但它们完全基于时间在彼此之前/之后被考虑,如针对时区所修改的。

具有与(a < b || a == b(不同的a <= b被认为是一种糟糕的设计,因此,<<=被完全丢弃。

最新更新