1

変更可能な scala スタック コレクションを使用するスタックがある場合、元のスタックを変更せずにスタックをポップして要素を分析できるように、スタックをコピーする方法はありますか? たとえば、次のようなスタックとコードがあるとします。

import scala.collection.mutable.Stack
var stack1 = new Stack[Int]
/** Code that pushes integers on stack1*/
var stackCopy = stack1
while (!stackCopy.isEmpty) {
    println(stackCopy.pop)
}

while ループを使用して、stack1 のすべての要素を出力したいと考えています。しかし、コピーを作成してそのコピーを取り出すと、元のスタック (つまり、stack1) も変更されます。元のスタックを保持したいのですが、アドレスではなくコンテンツを取得するにはどうすればよいですか?

4

1 に答える 1

1

理解のために使用できます:

for( i <- stack1 ) { println(i) }

または単にforeachメソッドを呼び出します。

stack1 foreach println

どうしてもループを使用する場合はwhile、最初にリストに変換できます。

var is = stack1.toList
while( is.nonEmpty ) {
  println( is.head )
  is = is.tail
}

これらすべての方法で、元のスタックが保持されます。

于 2012-04-30T17:54:32.857 に答える