問題タブ [either]

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 投票する
3 に答える
195 参照

ruby-on-rails - Railsでクエリを実行する「(xAND y)OR(a ANDb)」を作成する最良の方法は何ですか?

Railsでクエリを実行する「(xAND y)OR(a ANDb)」を作成する最良の方法は何ですか?

2人のユーザー間でメッセージを返すために次のmessagesメソッドを作成しました。選択は、2人のユーザー間でメッセージを取得することです。つまり、私から彼らへ、そして彼らから私へのメッセージを私に与えます

それは動作しますが、恐ろしいように見えます。これを書くためのより簡単でより良い方法はありますか?

注ジミーのおかげで、私は次のようになりました。

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

scala - scala Each.RightProjection の混乱 (理解の脱糖のため)

=次のように、scala for-comprehension ( SLS のセクション6.19で指定) でan を使用できます。

オプション

いくつかの機能があるとしますString => Option[Int]:

それから私はそれを使うことができます

これは本質的に次のものと同等であることが私の理解でした。

つまり、組み込みジェネレーターは、map一連のflatMap呼び出しに a を挿入する方法でした。ここまでは順調ですね。

どちらか.RightProjection

私が実際にやりたいこと:モナドを使用した前の例と同様の for-comprehension を使用しEitherます。

ただし、同様のチェーンで使用すると、今回はEither.RightProjectionモナド/ファンクターを使用すると機能しません。

次に使用します。

この問題は、右射影がそのflatMapメソッドへの引数として期待する関数 (つまり、 を期待するR => Either[L, R]) と関係があります。しかしright、2 番目のジェネレーターを呼び出さないように変更しても、コンパイルされません。

メガコンフュージョン

しかし今、私は二重に混乱しています。以下は問題なく動作します。

しかし、これはしません:

これらは同等だと思いました

  • 何が起こっている?
  • =を介して理解するために、ジェネレーターをに埋め込むにはどうすればよいEitherですか?
0 投票する
3 に答える
18713 参照

scala - Scala の「for」構文でのどちらかの使用

私が理解しているように、Scala の「for」構文は、Haskell のモナドの「do」構文に非常に似ています。ListScala では、 s とsに "for" 構文がよく使用されますOption。sで使いたいEitherのですが、必要なメソッドがデフォルトのインポートにありません。

この機能は、何らかのインポートを通じて利用できますか?

少し問題があります。

リストの場合は になりますList()。の場合Option、 になりますNone。Scala 標準ライブラリはこれに対する解決策を提供しますか? (またはおそらくscalaz?)どのように?独自の「モナド インスタンス」を提供したいとします。

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

haskell - 「エラー」でスローされたエラーをキャッチしますか?

無効な入力でエラーをスローする stdlib 関数がいくつかあります。例えば:

代わりに a を返すようにラップしたいと思いEither e aます。どうやってやるの?

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

scala - scalaどちらかとどちらも処理しない

これを何と呼ぶか​​わからない、オプションはどちらかと同じように適合します、私は関係なく3番目のケースを処理する必要があります。

Scalazはすでにこのようなものを提供している可能性がありますが、別のライブラリがなくても、次の単純なケースを簡潔に処理する方法を知りたいと思っています。

実際のユーザーとユーザーとしてログインした管理者の両方のシナリオでユーザーセッションが存在するかどうかを確認する必要があります。後者が前者よりも優先されます。どちらの条件も存在しない場合は、ログイン画面を表示します。

実際のユーザーセッションチェックは次のようになります。

そして、管理者になりすましているユーザーのケースを追加する必要があります。

私はそれをすべて一緒に取得することができましたが、少しクリーンアップしたいと思います。操作はユーザーまたはユーザーとしての管理者のケースに関係なく同じです。

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

scala - Scala:どちらかが唯一のオプションですか?

データベースクエリなどの潜在的なランタイム障害に関してはEither[String, Option[T]]、次の結果を正確にキャプチャするために、何らかの形式を使用する必要があるようです。

  1. 一部(レコードが見つかりました)
  2. なし(レコードが見つかりません)
  3. SQL例外

オプションには単に十分なオプションがありません。

私はscalazに飛び込む必要があると思いますが、上記の何かが欠けていない限り、今のところそれはまっすぐです。

DAOの実装で自分自身を追い詰め、書き込み操作にどちらかを使用しましたが、一部のどちらかの書き込みはオプションの読み取りに依存していることがわかりました(たとえば、新しいユーザーのサインアップ時に電子メールが存在するかどうかを確認する)。 。

どちらかにオールインする前に、成功/失敗/例外のランタイムトリフェクタを処理する方法について誰かが別の解決策を持っていますか?

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

scala - どちらかの入力リストをフィルタリングするためのScalaポリモーフィック関数

よりエレガントなソリューションを求めて

私はこのコードを持っています。エラー処理を行う必要がないテストケースで使用します。それが何をするか:

  • 文字列の入力リストを取得します
  • DSJStteper.parseDSResultメソッドを使用してそれらを解析します
  • それらをフィルタリングし、それぞれから右の値を抽出します(左は例外です)

コードは次のとおりです。

今、私はそれほど多くのポリモーフィック関数を実行していませんが、これは機能します。でも少し醜い気がします。誰かが同じことを達成する方法について、より良い提案を持っていますか?

私はこれが個人的な好みの場合に帰着することを知っています。しかし、提案は大歓迎です。

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

scala - いずれかを使用したメソッド呼び出しの連鎖

すべてのメソッドが同じEither[Error、Result]を返す、ある種の「メソッド呼び出しチェーン」を作成できるかどうかを知りたいのですが。

私がやりたいのは、すべてのメソッドを連続して呼び出し、メソッドがLeft(Error)を返したら、メソッド呼び出しを停止して、呼び出しチェーンで見つかった最初のLeftを返すことです。

折り畳み、地図、投影法など、いくつか試してみましたが、Scalaは初めてで、エレガントな解決策は見つかりません。

私はそのようなことを試みました:

しかし、それは機能しません。そしてとにかく、私はそれが取るインデントが本当に好きではありません。さらに、エラーを問題を説明する新しい文字列に変換したいと思います(foldを使用する必要があると思いますか?)

私はそのように書かれたものを探しています:

Scalaでそのようなことをすることは可能ですか?おそらくEitherとOptionの両方を使用していますか?

また、最初の呼び出しが失敗した場合、他の呼び出しを行わないようにするという制約もあります。すべてを呼び出してからどちらかに参加するソリューションは必要ありません。

ありがとう!

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

scala - 理解とモナドのためのScalaでのメソッドパラメーターの検証

メソッドのパラメーターのnullを検証しようとしていますが、解決策が見つかりません...

誰かが私にやり方を教えてもらえますか?

私はこのようなことを試みています:

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

java - どちらかで失敗を処理する->スタックトレースはどこにありますか?

Scalaでは(他の関数型言語のように)制御フローを壊さない傾向があると聞いた人もいます...代わりに、慣例により、エラーを。で返しますEither Left

しかし、その例外からどのようにstracktraceを取得するのでしょうか。今のところ、私は左側にErrorコード、メッセージ、原因(Errorも)を含む単純なケースクラスを返します。しかし、エラーが発生した場合、スタックトレースを取得できません。私のアプリケーションが複雑になると、それを返したコードブロックを見つけるのが難しいかもしれませんError...根本的な原因は不可欠です。


では、実際には何をしますか?

Errorカスタムの代わりに、Javaタイプを返す必要がありますExceptionか?スタックトレースや原因などの重要な情報を失うことなく、Scalaの例外処理のベストプラクティスは何ですか?ThrowableLeft