scala.collection.immutable.Queue
的enqueue
函數被重載。如何將一個元素排入迭代隊列,例如隊列[列表[節點]]?
def enqueue[B >: A](elem: B]): Queue[B]
def enqueue[B >: A](iter: Iterable[B]): Queue[B]
第一個簽名允許您將單個項目添加到隊列中,後者允許您添加多個項目。
我正在研究圖搜索算法,並使用一個隊列來跟蹤我到目前爲止遍歷的路徑(List[Node]
)。但是,當我試圖排隊的路徑,編譯器假定我想使用具有可迭代簽名的函數並引發錯誤。
val path = List(Node(0), Node(1), Node(4))
val q: Queue[List[Node]] = Queue[List[Node]]().enqueue(path)
// Expression of type Queue[Product with Serializable] does not conform to expected type Queue[List[Node]]
我可以通過在另一個列表中包裝路徑來解決這個問題,但這是強制性的,不太清楚。
val q: Queue[List[Node]] = Queue[List[Node]]().enqueue(List(path))
// compiles
有沒有更好的方法來做到這一點?
編輯 我也注意到了:+
運營商只用來排隊單元素,我喜歡這樣,甚至更好。
val q: Queue[List[Node]] = Queue[List[Node]]() :+ path
很好的建議,這個工程。 – climmunk