如果我创建一个 Set
在 Scala 中使用 Set(1, 2, 3)
我得到一个 immutable.Set
.
scala> val s = Set(1, 2, 3)
s: scala.collection.immutable.Set[Int] = Set(1, 2, 3)
Q1:这究竟是怎样的一套?它是一些哈希集吗?例如,查找的复杂性是什么?
Q2:我在哪里可以阅读这种“设置创建”方法?我还以为是
apply
方法,但文档说“此方法允许将集合解释为谓词。它返回 true,如果此集合包含元素 elem。”同样,如果我创建一个
List
使用 List(1, 2, 3)
,我得到scala> val l = List(1, 2, 3)
l: List[Int] = List(1, 2, 3)
scala> l.getClass
res13: java.lang.Class[_] = class scala.$colon$colon
Q3:再说一遍,我能得到什么?在这种情况下,我什至无法立即判断它是否可变,因为它甚至不是
scala.collection
的一部分。 - 包。为什么这个活在scala
包?Q4:我可以在 API 中的何处阅读有关此“列表创建”方法的信息?
最佳答案
问题 1:在这种特定情况下,您会收到 Set3
这是一组不可变的正好三个参数。大概它使用 if-else if-else 来检查包含。如果你创建了一个超过 4 个元素的集合,你会得到一个不可变的哈希集。
Q2:您需要查看 apply
对象 Set 的方法,而不是类。 apply
Set 类的方法是您执行时调用的方法 someSet(something)
.
Q3:scala.::是一个非空的不可变单向链表(如果你做 List()
不带参数,你会得到 Nil
这是一个不可变的空列表)。它住在 scala
包,因为它被认为是非常基本的,所以它属于基础包。
问题 4:参见问题 2。
关于list - 在 Scala : What do I actually get? 中创建列表和集合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3149524/