[解決済み] Scalaにおける効率的なインデックス付き反復処理
2023-03-10 10:12:04
質問
Scalaは古いJavaのスタイルを持っていないため
for
ループはありません。
// does not work
val xs = Array("first", "second", "third")
for (i=0; i<xs.length; i++) {
println("String #" + i + " is " + xs(i))
}
を使わずに効率的に反復処理を行うにはどうしたらよいでしょうか?
var
's?
こんなことができる
val xs = Array("first", "second", "third")
val indexed = xs zipWithIndex
for (x <- indexed) println("String #" + x._2 + " is " + x._1)
のようになりますが、リストが2回走査されることになり、あまり効率的ではありません。
どのように解決するのですか?
2回トラバースするよりもずっと悪いことに、ペアの中間配列が作成されます。
あなたは
view
. を実行すると
collection.view
を実行した場合、それ以降の呼び出しは反復処理中に遅延的に動作していると考えることができます。もし、完全に実現された適切なコレクションを取得したい場合は
force
を呼び出します。ここでは、それは無駄でコストがかかる。そこで、コードを次のように変更する。
for((x,i) <- xs.view.zipWithIndex) println("String #" + i + " is " + x)
関連
-
[解決済み] 配列の反復処理に "for...in "を使用するのは、なぜ良くないのでしょうか?
-
[解決済み] Scalaのオブジェクトとクラスの違い
-
[解決済み] Javaでリストを反復処理する方法
-
[解決済み] jQuery.each()utilで次の反復にスキップする方法は?
-
[解決済み】イテレータ、イテラブル、イテレーションとは一体何ですか?
-
[解決済み] Scalaのパターンマッチはなぜ変数で機能しないのですか?
-
[解決済み] Scalaでmapを使用してインデックスを受け取るにはどうしたらいいですか?
-
[解決済み] Scala で複数の暗黙の引数を持つ関数を定義する
-
[解決済み] フォールドの早期中止
-
[解決済み] Mapにkeyやvalueが存在するかどうかを確認するには?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] 述語で配列を2つに分割するには?
-
[解決済み] Scalaでfor-comprehensionとloopを最適化する方法とは?
-
[解決済み] リスト[Option]からNoneを除外するには?
-
[解決済み] Scala の private と protected コンストラクタ
-
[解決済み] Scalaでmapを使用してインデックスを受け取るにはどうしたらいいですか?
-
[解決済み] Apache SparkでDataframeのカラム値をListとして抽出する。
-
[解決済み] Scala型プログラミングリソース
-
[解決済み] SBTのrunアクションでアプリケーションを実行するために、JVMの最大ヒープサイズを"-Xmx "で指定する方法は?
-
[解決済み] Scalaで、リストから重複を取り除くにはどうしたらいいですか?
-
[解決済み] scala.concurrent.Promiseのユースケースは何ですか?