2013-04-06 57 views
1

我想解决在斯卡拉hw问题。传统的解决方案需要一个堆栈,但到目前为止还没有在该类中引入堆栈。只有名单已经引入。我的问题是如何可以将列表视为堆栈?换句话说,我如何模仿推送和弹出列表中的元素?如何将Scala列表作为堆栈使用?

+0

你可能尝试在传统解决方案之外思考会更好。可能有一个原因,堆栈没有被引入。这位教授可能试图强迫你更多的功能性思考 – 2013-04-07 02:54:21

回答

6

我希望这将显示想法:

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) 

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

scala> val popped::stack = pushed0 
popped: Int = 0 
stack: List[Int] = List(1, 2, 3) 
+0

啊,就像ML一样。谢谢。 – awm 2013-04-06 20:13:52

+0

@Ali是的,实际上斯卡拉借了很多来自ML和ML类语言 – 2013-04-06 20:17:14

+0

嗯... Lisp的,也许? – 2013-04-06 20:45:39