問題タブ [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 - Option#orNull を使用する場合
私が理解しているようにnull
、Scala での使用は避けるべきです。また、一部のフィールドが「値なし」を持つことが論理的に有効でない場合は、 s の使いOption
すぎを避けるために使用しないでくださいOption
。
それでは、コードを見てみましょう。授業がある
name
そして、フィールドが であってはならないことnull
を100% 確信していString
ますOption[String]
。
問題は、一部の標準 Scala メソッドが me に返されることですOption
。(私の場合、IterableLike#find
メソッドは Option を返します)
問題は、ラップされUser
たときにインスタンスを作成する方法です。少し明確にするために、これはコードです:name
Option
Option.get
それはエレガントな解決策ではないと聞きました。orNull
方法は とほぼ同じget
です。
scala - ツリーのようなオプション構造のパターン マッチングのより良い実装
入力 Option[... が非常識に見えることはわかっていますが、これは Spark 操作から受け取ったものなので、対処する必要があります。この複雑なタプル/オプション構造からすべての反復子オプションを取得するより良い方法はありますか?
scala - Scala - オプション型 Var 操作
オプションとスレッドを練習するオンライン演習に取り組んでいますが、どちらもほとんど経験がありません。オンラインの演習にはテスト スイートが付属しているため、現在、スレッドのテスト ケースに進む前に、オプションのテスト ケースに合格するようにしています。
これが私のコードです:
現在、 type が必要であるというエラーが表示されてcloseAccount()
いるため、コメントアウトしましたSome[Int] instead of Option[Int]
。私がどのように初期化したかを考えると理解できますbalance
。に見られるようにの値から への移行方法がわかりませSome[Int]
ん。None
closeAccount()
これを理解する上で、どんな助けもいただければ幸いです。前もって感謝します。
最初の編集: で犯していた愚かな間違いを理解しましたincrementBalance
。getBalance
だったのでval
、操作後に値を再計算していませんでした。それでも迷ったcloseAccount()
。
scala - オプションでの map() の動作
Play Combinators を介して JSONObject インスタンスを実際のインスタンスにマップしようとしています。デシリアライズ作業を正しく行うことができます。問題は、Option[JSONObject] で map() がどのように機能するかについてです。
オプション1:
_ が正しく解決されないため、動作しません。コンパイルに失敗します。コンパイラは、オブジェクトで toString() を見つけることができませんでした。
オプション 2:
動作します!!。関数の引数の一部として変換が行われたときに、デフォルト変数の Type が伝播されない理由を誰か教えてもらえますか?
java - Java で Options と Scala Enumeration を使用してケース クラスをインスタンス化する
ケースクラスに列挙型とオプションの両方がある場合、Java からインスタンス化できないようです。
Scala では次のことを考慮してください。
そして、それらを使用するために Java で以下を実行します。
インスタンス化時にエラーが発生します (少なくとも Eclipse ではエラーが表示されます)が、問題a
なく動作します! Javaでインスタンス化する方法はありますか???b
c
EnumOption
scala - Option defers ClassCastExceptionでジェネリックメソッド呼び出しをラップするのはなぜですか?
次のような配列があるとしましょう*:
明らかな理由で失敗します:
次に、次のクラスを考えてみましょう。
私が知る限りgetAs
、前の のapply
後にasInstanceOf
.
驚くべきことに、そうではありません。単独で呼び出すと、例外がスローされます。
しかし、ラップされた場合はOption
成功します:
ラップされた値にアクセスしようとした場合にのみ失敗します:
それで、ここで何が起こりますか?制限されているように見えるClassCastException
ので、型消去のような醜いものに関連していると思います。
*サード パーティのコードの動作を模倣するためAny
にasInstanceOf
存在するので、それについて詳しく説明しないでください。
** Scala 2.10.5、2.11.7 でテスト済み
*** コンテキストに興味がある場合は、Using contains in scala - exception を参照してください。
**** コメントにリンクされているその他の関連する質問:
scala - Option.empty[A] を使用する必要がある場合と、Scala で None を使用する必要がある場合はいつですか?
Scala では、何かを に設定したい場合None
、いくつかの選択肢があります:None
またはを使用しOption.empty[A]
ます。
どちらかを選択して一貫して使用する必要がありますか? それとも、どちらか一方を使用する必要がある場合がありますか?
例: