从Stack中取出第二个元素

发布于 2024-10-24 21:34:53 字数 83 浏览 1 评论 0原文

我正在学习Scala。然而,在练习中,我对堆栈有一些问题。如何从堆栈中删除第二个元素。我必须删除第二个元素并放回顶部元素。

感谢您的提前

I am learning Scala. However, on the exercise, I have some problem with Stack. How can I remove the second element from stack. I have to remove second element and put back the top element.

Thanks your advance

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

温柔一刀 2024-10-31 21:34:53

我不知道 scala 但通常你会

variable = pop()
pop()
push(variable) 

保存第一个元素,将第二个元素弹出到涅槃
然后再次将第一个元素推到顶部

i dont know scala but normally you would do

variable = pop()
pop()
push(variable) 

save the first element, pop the second one to nirvana
and then push the first element on top again

心房的律动 2024-10-31 21:34:53

我对 Scala 一无所知,但堆栈就是堆栈。

在堆栈上调用 pop 并将返回值分配给临时变量,然后再次弹出并推回您在第一次调用 pop 时分配的元素。

伪代码:

tempVar = stack.pop();
stack.pop();
stack.push(tempVar);

I know nothing about Scala, but a stack is a stack.

Call popon the stack and assign the returned value to a temporary variable, then pop again and push back the element you assigned with the first call tot pop.

Pseudo code:

tempVar = stack.pop();
stack.pop();
stack.push(tempVar);
演出会有结束 2024-10-31 21:34:53

Stack 和 List 之间没有太大区别,Scala API 文档也说明了这一点。

如果使用列表,另一种方法是:

val result: (Option[T], List[T]) = myList match {
  case first :: x :: rest => (Some(x), first :: rest)
  case list => (None, list)
}

结果的显式类型是为了清晰起见。这样做的优点是,如果没有第二项,您不会抛出异常,并且这是如何使用模式匹配的一个很好的示例。

Not much difference between a Stack and a List, and the Scala API documentation says this as well.

If using a List, a different approach to this is:

val result: (Option[T], List[T]) = myList match {
  case first :: x :: rest => (Some(x), first :: rest)
  case list => (None, list)
}

The explicit type on the result is for clarity. The advantage to this is you wont throw an exception if there is no second item, and it is a decent example of how to use pattern matching.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文