問題タブ [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.
ruby-on-rails - Railsでクエリを実行する「(xAND y)OR(a ANDb)」を作成する最良の方法は何ですか?
Railsでクエリを実行する「(xAND y)OR(a ANDb)」を作成する最良の方法は何ですか?
2人のユーザー間でメッセージを返すために次のmessagesメソッドを作成しました。選択は、2人のユーザー間でメッセージを取得することです。つまり、私から彼らへ、そして彼らから私へのメッセージを私に与えます。
それは動作しますが、恐ろしいように見えます。これを書くためのより簡単でより良い方法はありますか?
注ジミーのおかげで、私は次のようになりました。
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
ですか?
scala - Scala の「for」構文でのどちらかの使用
私が理解しているように、Scala の「for」構文は、Haskell のモナドの「do」構文に非常に似ています。List
Scala では、 s とsに "for" 構文がよく使用されますOption
。sで使いたいEither
のですが、必要なメソッドがデフォルトのインポートにありません。
この機能は、何らかのインポートを通じて利用できますか?
少し問題があります。
リストの場合は になりますList()
。の場合Option
、 になりますNone
。Scala 標準ライブラリはこれに対する解決策を提供しますか? (またはおそらくscalaz
?)どのように?独自の「モナド インスタンス」を提供したいとします。
haskell - 「エラー」でスローされたエラーをキャッチしますか?
無効な入力でエラーをスローする stdlib 関数がいくつかあります。例えば:
代わりに a を返すようにラップしたいと思いEither e a
ます。どうやってやるの?
scala - scalaどちらかとどちらも処理しない
これを何と呼ぶかわからない、オプションはどちらかと同じように適合します、私は関係なく3番目のケースを処理する必要があります。
Scalazはすでにこのようなものを提供している可能性がありますが、別のライブラリがなくても、次の単純なケースを簡潔に処理する方法を知りたいと思っています。
実際のユーザーとユーザーとしてログインした管理者の両方のシナリオでユーザーセッションが存在するかどうかを確認する必要があります。後者が前者よりも優先されます。どちらの条件も存在しない場合は、ログイン画面を表示します。
実際のユーザーセッションチェックは次のようになります。
そして、管理者になりすましているユーザーのケースを追加する必要があります。
私はそれをすべて一緒に取得することができましたが、少しクリーンアップしたいと思います。操作はユーザーまたはユーザーとしての管理者のケースに関係なく同じです。
scala - Scala:どちらかが唯一のオプションですか?
データベースクエリなどの潜在的なランタイム障害に関してはEither[String, Option[T]]
、次の結果を正確にキャプチャするために、何らかの形式を使用する必要があるようです。
- 一部(レコードが見つかりました)
- なし(レコードが見つかりません)
- SQL例外
オプションには単に十分なオプションがありません。
私はscalazに飛び込む必要があると思いますが、上記の何かが欠けていない限り、今のところそれはまっすぐです。
DAOの実装で自分自身を追い詰め、書き込み操作にどちらかを使用しましたが、一部のどちらかの書き込みはオプションの読み取りに依存していることがわかりました(たとえば、新しいユーザーのサインアップ時に電子メールが存在するかどうかを確認する)。 。
どちらかにオールインする前に、成功/失敗/例外のランタイムトリフェクタを処理する方法について誰かが別の解決策を持っていますか?
scala - どちらかの入力リストをフィルタリングするためのScalaポリモーフィック関数
よりエレガントなソリューションを求めて
私はこのコードを持っています。エラー処理を行う必要がないテストケースで使用します。それが何をするか:
- 文字列の入力リストを取得します
- DSJStteper.parseDSResultメソッドを使用してそれらを解析します
- それらをフィルタリングし、それぞれから右の値を抽出します(左は例外です)
コードは次のとおりです。
今、私はそれほど多くのポリモーフィック関数を実行していませんが、これは機能します。でも少し醜い気がします。誰かが同じことを達成する方法について、より良い提案を持っていますか?
私はこれが個人的な好みの場合に帰着することを知っています。しかし、提案は大歓迎です。
scala - いずれかを使用したメソッド呼び出しの連鎖
すべてのメソッドが同じEither[Error、Result]を返す、ある種の「メソッド呼び出しチェーン」を作成できるかどうかを知りたいのですが。
私がやりたいのは、すべてのメソッドを連続して呼び出し、メソッドがLeft(Error)を返したら、メソッド呼び出しを停止して、呼び出しチェーンで見つかった最初のLeftを返すことです。
折り畳み、地図、投影法など、いくつか試してみましたが、Scalaは初めてで、エレガントな解決策は見つかりません。
私はそのようなことを試みました:
しかし、それは機能しません。そしてとにかく、私はそれが取るインデントが本当に好きではありません。さらに、エラーを問題を説明する新しい文字列に変換したいと思います(foldを使用する必要があると思いますか?)
私はそのように書かれたものを探しています:
Scalaでそのようなことをすることは可能ですか?おそらくEitherとOptionの両方を使用していますか?
また、最初の呼び出しが失敗した場合、他の呼び出しを行わないようにするという制約もあります。すべてを呼び出してからどちらかに参加するソリューションは必要ありません。
ありがとう!
scala - 理解とモナドのためのScalaでのメソッドパラメーターの検証
メソッドのパラメーターのnullを検証しようとしていますが、解決策が見つかりません...
誰かが私にやり方を教えてもらえますか?
私はこのようなことを試みています:
java - どちらかで失敗を処理する->スタックトレースはどこにありますか?
Scalaでは(他の関数型言語のように)制御フローを壊さない傾向があると聞いた人もいます...代わりに、慣例により、エラーを。で返しますEither
Left
。
しかし、その例外からどのようにstracktraceを取得するのでしょうか。今のところ、私は左側にError
コード、メッセージ、原因(Error
も)を含む単純なケースクラスを返します。しかし、エラーが発生した場合、スタックトレースを取得できません。私のアプリケーションが複雑になると、それを返したコードブロックを見つけるのが難しいかもしれませんError
...根本的な原因は不可欠です。
では、実際には何をしますか?
Error
カスタムの代わりに、Javaタイプを返す必要がありますException
か?スタックトレースや原因などの重要な情報を失うことなく、Scalaの例外処理のベストプラクティスは何ですか?Throwable
Left