documentation表示Set.head
返回“第一个”项目,而.tail
返回“除第一个以外的所有项目”。*由于Set
没有真正的“第一个”项目,因此文档警告如果没有有序类型,可能会在不同的运行中得到不同的结果。但你保证尾巴不会包括头部吗?集合的头部和尾部是否保证相互排斥?
的原因,我问的是我想知道如果它是确定改乘下一个Set
这样的:
def recurse(itemsToExamine: Set[Item], acc: Result): Result =
if (itemsToExamine.isEmpty) acc
else {
val item = itemsToExamine.head
recurse(
item.spawnMoreItems ++ itemsToExamine.tail,
acc.updatedFor(item))
}
如果这是合法的,这肯定会是不是转换从Set
到Seq
和背部更好以便在每次递归时分离头部和尾部。 *实际上,它表示“选择第一个项目”和“选择除第一个项目以外的所有项目”。我认为“选择”只是一个不好的选择。如果有理由说“选择”而不是“退货”,请告诉我。
'Iterator'的'.tail'等价于什么?调用'.next'后'.toSet'? –