Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/scala/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用Scala列表作为堆栈?_Scala - Fatal编程技术网

如何使用Scala列表作为堆栈?

如何使用Scala列表作为堆栈?,scala,Scala,我正在尝试解决Scala中的一个硬件问题。传统的解决方案需要一个堆栈,但到目前为止还没有在类中引入堆栈。只介绍了清单。我的问题是如何将列表视为堆栈?换句话说,我怎样才能模拟在列表中推送和弹出元素呢?我希望这能说明这个想法: 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> va

我正在尝试解决Scala中的一个硬件问题。传统的解决方案需要一个堆栈,但到目前为止还没有在类中引入堆栈。只介绍了清单。我的问题是如何将列表视为堆栈?换句话说,我怎样才能模拟在列表中推送和弹出元素呢?

我希望这能说明这个想法:

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)

我希望这将表明以下观点:

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)

啊,就像ML一样。谢谢。@Ali yep,实际上Scala从ML和ML一样的语言中借用了很多东西,stack.pushAllother变成了other.reverse++stack.啊,就像ML一样。谢谢。@Ali yep,实际上Scala从ML和类似ML的语言中借用了很多东西,stack.pushAllother变成了other.reverse++堆栈。您最好尝试从传统的解决方案之外思考。可能有一个原因没有引入堆栈。教授可能是想迫使你思考更多的功能性问题。你最好尝试在传统解决方案之外思考。可能有一个原因没有引入堆栈。教授可能是想强迫你从功能上思考问题