問題タブ [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.
javascript - 複数の配列の理解
JavaScript は知っていますが、実際の JavaScript が何であるかはわかりません。そこで、言語の内部の仕組みをゼロから学ぶことにしました。
MSDN をブラウジングして配列について読んでいたときに、Comprehension 情報に出くわしました。複数の配列の値を使用して、理解自体でそれらを接続することは可能ですか?
私はこのようなことを試しました:
もちろん、私がチェックした他のいくつかの構造と同様に、それは機能しませんでした-そしてインターネットは私の好奇心を満たしませんでした. hereから得た唯一のヒントですが、そこのコードは私が望んでいることを正確に実行しません。
内包と外で使われる文や表現に関係はありますか?上記の URL では、複数の「for each」が使用されていますが、今のところ、これらの構造を標準式から構築する方法を学ぶことができませんでした。
python-3.x - 理解によって要素がすでにリストにあるかどうかを確認するにはどうすればよいですか?
私が内包でやっているときに、要素がすでにリストにあるかどうかをどのように確認しますか?
たとえば、次の理解では、重複した番号を制限したいとします。一意の番号をまったく探していませんが、if条件で防止したいと考えています。
私は次のようなものを探しています
scala - Try 内のシーケンスを理解するための Scala
シーケンスを作成する操作がある Scala プログラムを書いています。操作が失敗する可能性があるため、 で囲みTry
ます。for 内包内でシーケンスの作成と列挙を行いたいので、正常に作成されたシーケンスは、最初の要素がシーケンスであり、2 番目の要素がその要素であるタプルのシーケンスを生成します。
問題を単純化するために、Range
整数のシーケンスcreateRange
を作成し、奇数の長さの範囲を作成するように求められた場合に失敗する関数を定義します。これは、私が望むことを理解するための簡単なものです。
これを実行すると、正しく印刷されます。
ここで、関数を書き直してrangeElements
、副作用として出力するのではなく、整数のシーケンスを返すようにします。範囲が作成されていない場合、シーケンスは空です。書きたいのはこれです。
これにより、2 つの型の不一致コンパイラ エラーが発生します。r <- createRange(n)
行が必要ですSeq[Int]
が見つかりましたscala.util.Try[Nothing]
。x <- r
行が必要ですscala.util.Try[?]
が見つかりましたscala.collection.immutable.IndexedSeq[Int]
。
おそらく、Try
私を台無しにしているタイプの消去がありますが、それが何であるかわかりません。私は理解のために、行でさまざまな修飾子を試しましtoOption
たtoSeq
が、役に立ちませんでした。
範囲要素のみを生成する必要がある場合は、以下の最初の 2 つの回答で示唆されているように、自分自身のSuccess
andFailure
条件を明示的に処理できます。createRange
ただし、範囲とその個々の要素の両方にアクセスする必要があります。
これは奇妙に聞こえる例だと思います。私が解決しようとしている本当の問題は複雑な再帰検索ですが、ここで問題を混乱させるだけなので、その詳細をすべて追加したくありません。
rangeElements
目的のシーケンスを生成するにはどうすればよいですか?
scala - EachT と Future の組み合わせ
さまざまなバックエンド システムに対して多くの呼び出しを行うアプリがあり、for 内包表記を使用してバックエンド システム全体のプロセス フローを簡素化したいと考えています。
私は、EitherT (scalaz) と Future (scala 2.10) を組み合わせて、最初の潜在的なエラー (未来またはバックエンド システムの問題) を捕捉し、適切なメッセージをエンド ユーザーに返すことができるようにしようと考えています。私は scalaz Validation をざっと見てきましたが、すべてのエラーではなく最初のエラーをキャプチャするための推奨事項は、EitherT を使用することです。
最初にREPLで簡単な例を試していますが、次のエラーが発生しています
エラー: パラメータ F の暗黙的な値が見つかりませんでした: scalaz.Functor[scala.concurrent.Future]
私はまだscalaとscalazの両方に慣れていないので、どんなポインタでも素晴らしいでしょう。
** アップデート **
@stew の提案に基づいて scalaz-contrib を含めることにより、さまざまな単純なユースケースのバックエンドの成功、バックエンドの失敗、および将来の失敗を示す、EitherT と Future を組み合わせた for 内包表記を示す更新バージョンができました。
scala - 理解のためにフィルターを使用した Scala Future
以下の例では、例外が発生しますjava.util.NoSuchElementException: Future.filter predicate is not satisfied
Future( Test2 )
チェックif( i == 2 )
が失敗したときに結果を取得したい。フューチャの構成を扱う for 内包内で filter/if を処理するにはどうすればよいですか?
以下は、Scala REPL で動作する簡単な例です。
コード:
scala - scala yield のケースクラスをインスタンス化する
for 内包表記から手動でパラメーターをフィードすることなく、for 内包表記 (この場合は scalaz 検証ファンクターを使用) からケースクラスを直接インスタンス化する方法があるかどうか疑問に思っていました。
このようなケースクラスがある場合
そして、あなたがこのようなことをすると仮定します
やっとこんな感じで使えるようになりました
問題は、p のケース クラス インスタンスを取得していないことです (apply を使用したばかりなので、明らかに p は正しくありません)。
私がこれを尋ねている理由は、20以上の変数を提供する内包表記があり、各変数をケースクラスのインスタンス化にフィードする必要があるため、多くのボイラープレートが作成されるためです
scala - if ガードを理解するため
if ガードの理解にはどのように使用すればよいですか?
使用中にこのエラーが発生しました。
編集: 別のエラーが発生しました。ガードを使用するとオプションの結果が返ってくると思います。
EDIT2
scala - ガードがエラーをスローする場合の理解のために
このように if ガードを内包するために使用すると、1 つのエラーが発生します。
コード:
エラー:
scala - 先物とオプションの構成
、 、および の4 つの型A
、型の初期値、および、 、および の 3 つの関数があります。B
C
D
x
Future[Option[A]]
f1: A => Option[B]
f2: B => Future[Option[C]]
f3: C => D
3 つの関数の "構成" となる型の値になるという結果for
から始まる内包表記を作成するにはどうすればよいでしょうか?x
Future[Option[D]]