問題タブ [for-comprehension]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
1 に答える
1844 参照

scala - Scala の For ループのスコープを理解する (For Comprehension)

Programming Scalaの第 3 章で、著者は for ループと for 内包表記の 2 つの例を示していますが、() と {} の使用を切り替えています。これらは本質的に同じことをしているように見えるのに、なぜそうなるのでしょうか? breed <- dogBreeds例 2 の 2 行目にある理由はありますか?

0 投票する
3 に答える
2223 参照

scala - 内包表記と部分マップのための Scala

Scala 言語仕様のセクション6.19には次のように書かれています。

理解のためのAfor (p <- e) yield e0はに翻訳されますe.map { case p => e0 }

そう...

ここまでは順調ですね:

2 番目のバージョンが機能しないのはなぜですか? というか、最初のバージョンが機能するのはなぜですか?

0 投票する
3 に答える
19244 参照

scala - 理解のための Scala "<-"

私は、Scala が常に何に対しても「自然な説明」を持っていることを発見しました。常に「ああ、でもそれは、これとそのパラメーターを使用して、このオブジェクトとそのオブジェクトで呼び出されている関数にすぎません」のようなものです。ある意味で、他の言語からわかるように、実際にコンパイラー・マジックと呼ばれるものはありません。

私の質問は、次のコードで使用されている<-演算子です。

この例では、次のように書き換えられていることがわかります。

しかし、これはiが foreach 関数内の匿名関数にどのように運ばれたかを説明していません。iを書いた時点では、それはオブジェクトではなく、宣言された変数でもありません。では、それは何であり、どのように foreach の内部に引き継がれているのでしょうか?

私の推測では、実際にはコンパイラの魔法である何かをついに発見したということです

御時間ありがとうございます。

明確にするために、私の質問は次のとおりです。 <- 演算子は、コードの1行目でどのように機能しますか? i は、関数として呼び出すことができるオブジェクトではないためです。

0 投票する
6 に答える
30507 参照

scala - for-comprehension 内で「if..else」を実行するにはどうすればよいですか?

最近私を混乱させた非常に基本的な質問をしています。次のようなことを行う Scala For 式を書きたいと思います。

問題は、式の複数のジェネレーターで、式本体のそれぞれをどこに置くことができるかわかりません。

Scala スタイルでコードを書き直すにはどうすればよいですか?

0 投票する
5 に答える
2704 参照

scala - 理解効率のためのScala?

『Programming In Scala』の第23章で、著者は次のような例を示しています。

著者によると、これは次のように翻訳されます。

しかし、マップとフラットマップのメソッド定義(TraversableLike.scala)を調べると、それらはforループとして定義されていることがわかります。

ええと、これは継続的にforeachに変換されてから、式ではなく構成であるwhileステートメントに変換されると思います。scalaにはfor構成がありません。これは、forが常に何かを生成することを望んでいるためです。

それで、私があなたと話したいのは、なぜScalaがこれを「翻訳のために」行うのかということです。books著者の例では4つのジェネレーターを使用しましたが、これは最終的に4レベルのネストされたforループに変換されます。これは、が大きい場合に非常に恐ろしいパフォーマンスになると思います。

Scalaは、この種の「シンタックスシュガー」の使用を推奨しています。フィルター、マップ、フラットマップを多用するコードを常に見ることができます。プログラマーは、あるループを別のループの中にネストしていることを忘れているようです。コードを少し短く見せます。あなたの考えは何ですか?

0 投票する
4 に答える
14447 参照

scala - for-comprehenion / yield を使用して Scala でマップを作成できますか?

マップに「譲る」ことはできますか?

私はもう試した

(およびの,代わりに->)が、エラーが発生します

理由はわかりますが、これを解決する方法がわかりません:-/

0 投票する
5 に答える
22059 参照

scala - 理解のためにリストを使用してオプションを作成すると、順序に応じてタイプの不一致が発生します

この構造がScalaでタイプミスマッチエラーを引き起こすのはなぜですか?

一部をリストに切り替えると、正常にコンパイルされます。

これも正常に機能します。

0 投票する
2 に答える
3175 参照

scala - Scala for-comprehension 構文

次のコードでは、for内包表記内で、タプル逆参照を使用して文字列とインデックスを参照できます。

コードの読者が と の値に疑問を抱く必要がないように、Scala 構文で内包ヘッダーstringWithIndexの部分 (文字列とインデックス) に分割する方法はありますか?forstringWithIndex._1stringWithIndex._2

次のことを試しましたが、コンパイルできませんでした。

0 投票する
2 に答える
914 参照

scala - scala で理解するためのモック

私はこのコードを持っています

ユニットテストをしたいと思います。必要な要素のシーケンスを返すために、table.find をモックしたいと考えています。hasNext()Iterator インターフェイスのモックとメソッドを試しnext()ましたが、機能していないようです。理解のためにaをモックする方法はどれですか?

0 投票する
1 に答える
199 参照

scala - 行のバッチをXMLとして返すファイルを反復処理するための最良の方法が必要です

内容に基づいて、特定の行をXMLに結合し、XMLを返すファイルを処理するための最良の方法を探しています。

例:与えられた

最初の電話を返したいかもしれません

それに続く呼び出し

興味のないコンテンツと入力ストリームを使い果たすために3行目をスキップします。(注:<msg>タグには常に連続した行が含まれますが、XML内のそれらの行の数と構成は異なります。)メッセージに含める行を選択するための基準が必要な場合は、奇数行番号が次のように組み合わされていると想定します。 4行、行番号も次の2行と結合し、mod(10)行番号は次の5行と結合し、「#」で始まる行をスキップします。

私はこれをイテレータとして実装する必要があると考えていました。

それは合理的ですか?もしそうなら、それを実装するための最良の方法は?そうでない場合、それを実装するための最良の方法は?:)

ありがとう