【发布时间】:2016-04-22 18:20:14
【问题描述】:
意外地,我观察到了不对称性。
让我们列个清单:
val li = List (Some (3), Some (2), None, Some (9))
li: List[Option[Int]] = List(Some(3), Some(2), None, Some(9))
scala> li.max
res54: Option[Int] = Some(9)
好的 - Some(9) 大于 None。为什么?大会? None 是否转换为 Null 和 Null 自动装箱为 0?
scala> li.min
res55: Option[Int] = None
看起来,好像那个印象是真实的,但让我们引入一个负数:
scala> val li = List (Some (3), Some (-2), None, Some (9))
li: List[Option[Int]] = List(Some(3), Some(-2), None, Some(9))
scala> li.min
res52: Option[Int] = None
scala> li.max
res53: Option[Int] = Some(9)
这很令人惊讶,至少对我来说。
是的,我知道,我做错了。正确的做法是,先压平,万事大吉:
scala> li.flatten.min
res57: Int = -2
scala> val li = List (Some (3), Some (2), None, Some (9))
li: List[Option[Int]] = List(Some(3), Some(2), None, Some(9))
scala> li.flatten.min
res56: Int = 2
但我的问题仍然悬而未决:
是否None和Some(x),缺乏其他可比性,都视为Objects,然后通过toString比较('N'
【问题讨论】: