問題タブ [scala-option]
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.
scala - T から Option[T] への暗黙的な変換を Scala で追加/作成できますか?
これは物事をもう少し効率的にする機会ですか (プロランマーにとって): でラップする必要があるのは少し面倒だと思いSome
ますSome(5)
。このようなものはどうですか:
scala - Scalaの恒等関数はありますか?
私がのようなものを持っていてList[Option[A]]
、これをに変換したいList[A]
場合、標準的な方法は次を使用することflatMap
です:
今o => o
は単なる恒等関数です。私は何かする方法があるだろうと思ったでしょう:
ただし、を生成できないため、これを機能させることはできませんobject
。私は役に立たないいくつかのことを試みました。誰かがこのようなものを機能させることができますか?
scala - X => Option[R] を PartialFunction[X,R] に変換する方法
がある限り、PartialFunction[X,R]
それを返す関数に変換するのは非常に簡単ですOption[R]
。
ただし、タスクが逆の場合はどうなるでしょうか。引数としてf
取得し、結果として返す関数があるとします。そして、私はそれを作りたいと思っています。最善の方法は何ですか?X
Option[R]
PartialFunction[X,R]
私が思いついたものは、私の好みにはかなり醜く見えます:
私が逃したより良い方法はありますか?
scala - あらゆる場所で Option を使用すると、少しぎこちなくなります。私は何か間違ったことをしていますか?
Option
NullPointerException を回避するのに役立つクラスについて読んだ記事の結果として、あらゆる場所でこのクラスを使用するようになりました。次のようなものを想像してください。
後で私がそれを使用するとき:
このようなことをすることは、私にとってそれほど「正しい」とは感じません。.get
また、非推奨になっていることに気付きました。. この種のことは、皆さんが Option でも行っていることですか、それとも間違った方向に進んでいますか?
scala - Option が Iterable トレイトを直接拡張しないのはなぜですか?
Option
暗黙的に - に変換可能ですが、直接Iterable
実装するだけではないのはなぜですか:Iterable
編集: 実際には、2.8ではメソッドOption
を宣言するiterator
ため、それよりもさらに複雑です:
scala - リフレクションを使用して実行時に Scala Option 宣言の型にアクセスする方法はありますか?
したがって、次のような Scala クラスがあります。
そして、私は文字列値を持っていて、リフレクションを使用して実行時にその Option[Int] に強制したいという問題に取り組んでいます。したがって、別のコード (TestClass について何も知らない) には、次のようなコードがあります。
これを行うには、フィールドが Option であり、Option の型パラメーターが Int であることを知る必要があります。
「値」のタイプが実行時に Option[Int] であることを理解するためのオプションは何ですか (つまり、リフレクションを使用します)?
@OptionType(Int.class) など、フィールドに注釈を付けることで同様の問題が解決されるのを見てきました。可能であれば、リフレクション ターゲットに注釈を必要としないソリューションを希望します。
scala - 高階関数を使用してオプションのリストを平坦化する方法は?
Scala 2.7.7 の使用:
オプションのリストがある場合、for-comprehension を使用してそれらをフラット化できます。
私はこのスタイルが好きではなく、むしろ HOF を使用します。この試行は冗長すぎて受け入れられません。
直感的には、次のように動作することを期待していましたが、そうではありません。
以下でも動作するはずですが、動作しません。
私が思いつくことができる最高のものは次のとおりです。
...しかし、オプションをリストに変換する必要はありません。それは不格好に思えます。
何かアドバイス?
list - リスト内の最初の Some で scala が返される
リストがl:List[T1]
あり、現在次のことを行っています。
このmyfun
関数は None または Some を返し、 flatten はすべての None を破棄し、 find はリストの最初の要素があればそれを返します。
これは私には少しハッキーに思えます。私は、これを少し無駄が少なく、より賢くするための理解などがあるかもしれないと考えています。例: list の実行中にanymyfun
が返された場合、その後の回答は必要ありません。 Some
map
l
scala - オプションモナドの流れを逆にするにはどうすればよいですか?
たとえば、エラーがない場合はNoneを返す「検証」関数がたくさんあり、そうでない場合はエラーメッセージを指定するSome(String)を返します。次のようなもの...
それらを順番に呼び出し、Some(String)を返すとすぐに停止して、同じものを返します。Noneが返された場合は、シーケンスが終了するまで次へ進みます。それらすべてがNoneを返す場合、私はNoneを返します。
それらを「表現のために」接着したいと思います。何かのようなもの ...
ただし、Optionは、ここで必要なものとは正反対に流れます。Noneで停止し、Some(String)が続きます。
どうすればそのようなことを達成できますか?
scala - Scalaのオプションモナド
オプションモナドはどのように機能するのですか?私はscalaapiを閲覧していますが、例があります(つまり、2番目のものです)。
理解のための方法のため、request.getParameterからNoneが返された場合、式全体がNoneになります。
しかし、私がこのコードを試してみると:
コンパイルエラーが発生します。これはどのように機能するはずですか?