作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
看来 scala.math.PartialOrdering.lteq
必须始终定义为(或至少给出相同的结果):
override def lteq(x: Pattern, y: Pattern) = {
tryCompare(x, y).map(_ <= 0).getOrElse(false)
}
scala.math.PartialOrdering
中没有给出这个实现是否有某种原因?特征?
最佳答案
我的猜测是鼓励编写更高效的 lteq
,因为所有其他方法都回退到 lteq
.所以你不会想创建一个 Option
,然后映射它。我宁愿问相反的问题——为什么不是 tryCompare
默认情况下实现,例如:
def tryCompare(x: T, y: T) = {
val p1 = lteq(x, y)
val p2 = lteq(y, x)
if (p1) {
if(p2) Some(0) else Some(-1)
} else if (p2) Some(1) else None
}
override
实现时的修饰符
lteq
.
tryCompare
从未在整个 Scala 标准库主体中使用过,所以也许它只是一个“遗留”......
关于scala - 为什么 scala.math.PartialOrdering.lteq 是抽象的,而不是根据 .tryCompare 定义的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11176003/
我有一个搜查搜索表单: Scheduled Payments to 我希望用户能够输入 2 个日期,并且对于每个 ScheduledPayment start_date 大于或等
看来 scala.math.PartialOrdering.lteq 必须始终定义为(或至少给出相同的结果): override def lteq(x: Pattern, y: Pattern) =
我是一名优秀的程序员,十分优秀!