Как выскочить и вернуть верхний элемент стека в Scala - PullRequest
0 голосов
/ 09 ноября 2019

Привет, я пытаюсь выскочить из верхнего элемента в стеке в некотором коде Scala, который я пишу, но функция pop для встроенного класса Stack возвращает весь Stack минус верхний элемент, а это не то, что яПосле.

Также кажется, что рекомендуемый способ реализации стека в Scala - использовать List, а затем использовать tail и :: как pop и push. tail также возвращает список минус «верхний» элемент.

Как это сделать, чтобы элемент был возвращен и мог быть сохранен в переменной?

EDIT

У меня есть этот код, чтобы продемонстрировать, что происходит:

sealed trait Symbol {
    def withType(): String
    def withValue(): String
}

class Lexer extends LexerTokeniser[Symbol] {

    case class Element(typeOf: String, value: String) extends Symbol {
        override def withType(): String = typeOf
        override def withValue(): String = value
    }

    private val controlStack = Stack[Element](Element("String", "s")) 

    val topEl = controlStack.pop // This sets topEl to type Stack[Element]
    val newTopEl = topEl.withValue() // This is an error, no such function
}

1 Ответ

0 голосов
/ 09 ноября 2019
import scala.collection.mutable.Stack

val stack = Stack[String]("a","b","c")

val popped = stack.pop

println(popped)// a

Это то, что вы хотите, я думаю, что вы путали хвост с поп-музыкой.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...