如何将Scala列表用作堆栈?

awm*_*awm 1 scala

我正在尝试解决Scala中的一个问题.传统的解决方案需要堆栈,但到目前为止还没有在类中引入堆栈.仅列出了清单.我的问题是如何将列表视为堆栈?换句话说,我如何模仿列表中的推送和弹出元素?

om-*_*nom 7

我希望这会表明这个想法:

scala> val x = List(1,2,3)
x: List[Int] = List(1, 2, 3)

scala> val pushed0 = 0::x
push3: List[Int] = List(0, 1, 2, 3)

scala> val pop0 = pushed0.head
pop3: Int = 0
// it is actually more peek than fair pop 

scala> val stackAfterPop = pushed0.tail
stackAfterPop: List[Int] = List(1, 2, 3)
Run Code Online (Sandbox Code Playgroud)

当你熟悉模式匹配时,它实际上会有更好的语法(下周我猜):

scala> val popped::stack = pushed0
popped: Int = 0
stack: List[Int] = List(1, 2, 3)
Run Code Online (Sandbox Code Playgroud)