什么时候Scala中的Set少于另一个?

aio*_*obe 4 scala scala-collections

我想比较Scala中两组的基数.由于Scala中的某些东西有时"正常工作",我尝试<在两组之间使用.它似乎经历了,但我无法理解结果.

例:

scala> Set(1,2,3) < Set(1,4)
res20: Boolean = true
Run Code Online (Sandbox Code Playgroud)
  • 它返回了什么?
  • 我在哪里可以阅读API中的这个方法?
  • 为什么它不在任何地方列出scala.collection.immutable.Set

更新:即使集合中元素的顺序(??)似乎也很重要:

scala> Set(2,3,1) < Set(1,3)
res24: Boolean = false

scala> Set(1,2,3) < Set(1,3)
res25: Boolean = true
Run Code Online (Sandbox Code Playgroud)

Dan*_*ral 5

这不适用于2.8.在Scala 2.7上,会发生什么:

scala.Predef.iterable2ordered(Set(1, 2, 3): Iterable[Int]) < (Set(1, 3, 2): Iterable[Int])
Run Code Online (Sandbox Code Playgroud)

换句话说,定义了一个隐式转换scala.Predef,它被"导入"所有Scala代码,从一个Iterable[A]到一个Ordered[Iterable[A]],只要有一个隐含的A => Ordered[A]可用.

鉴于集合的可迭代顺序未定义,您无法真正预测它.例如,如果添加元素以使设置大小大于4,则会得到完全不同的结果.