【发布时间】:2014-06-27 19:19:33
【问题描述】:
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 并返回以在每次递归时分离头尾要好。
*实际上,它说“选择第一个项目”和“选择除第一个项目之外的所有项目”。我认为“选择”只是一个糟糕的词选择。如果有理由说“选择”而不是“退货”,请告诉我。
【问题讨论】:
标签: scala recursion scala-collections