0
我想在collection.immutable.Stack[xml.MetaData]
中维护一堆元素属性。问题如下:如何将scala.xml.Null推入堆栈[MetaData]?
scala> import scala.xml.MetaData
import scala.xml.MetaData
scala> import scala.xml.Null
import scala.xml.Null
scala> val s = Stack[MetaData]()
s: scala.collection.immutable.Stack[scala.xml.MetaData] = Stack()
scala> s push Null
res1: scala.collection.immutable.Stack[scala.xml.MetaData] = Stack()
scala> s.pop
java.util.NoSuchElementException: pop of empty stack
at scala.collection.immutable.Stack.pop(Stack.scala:113)
... 33 elided
堆栈为空!我想这是因为MetaData
实际上是一个迭代器,而Null
代表一个空的迭代器。
我希望能够按照我推动的次数弹出,但是我不能,因为我不会每次都推动任何东西MetaData
是Null
。这是什么建议的解决方法?我可以将它包装在Option
中,但那会很奇怪,因为那总是Some
。
你是绝对正确的。实际上,我注意到了不变性,并在代码中使用了更新后的堆栈,但未在我粘贴的REPL测试中使用。此外,我的问题是,我正在解释堆栈的控制台输出,就好像顶部位于右侧(底层集合的末尾),顶部实际位于左侧(底层集合的头部)。 –