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

Why doesn't Dart's DateTime object make use of the less than and greater than operator override methods?

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

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

我知道这可以像 this DartPad 中那样使用扩展来完成,而且确实它完全按照预期工作,据我所知,没有办法知道正在使用扩展...

但是为什么在开发 DateTime 对象时没有考虑覆盖运算符?或者如果考虑过,为什么不包括在内?

出于多种原因,但主要是因为排序 == 不兼容。

如果两个 DateTime 对象具有相同的 时区,则它们是相等的,但完全基于时间将它们视为 before/after,根据时区修改。

a <= b 与 (a < b || a == b) 不同,这被认为是一个糟糕的设计,因此,<<= 被删除完全。