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'? –