問題タブ [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.

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

scala - Option#orNull を使用する場合

私が理解しているようにnull、Scala での使用は避けるべきです。また、一部のフィールドが「値なし」を持つことが論理的に有効でない場合は、 s の使いOptionすぎを避けるために使用しないでくださいOption

それでは、コードを見てみましょう。授業がある

nameそして、フィールドが であってはならないことnullを100% 確信していStringますOption[String]

問題は、一部の標準 Scala メソッドが me に返されることですOption。(私の場合、IterableLike#findメソッドは Option を返します)

問題は、ラップされUserたときにインスタンスを作成する方法です。少し明確にするために、これはコードです:nameOption

Option.getそれはエレガントな解決策ではないと聞きました。orNull方法は とほぼ同じgetです。

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

scala - ツリーのようなオプション構造のパターン マッチングのより良い実装

入力 Option[... が非常識に見えることはわかっていますが、これは Spark 操作から受け取ったものなので、対処する必要があります。この複雑なタプル/オプション構造からすべての反復子オプションを取得するより良い方法はありますか?

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

scala - Scala - オプション型 Var 操作

オプションとスレッドを練習するオンライン演習に取り組んでいますが、どちらもほとんど経験がありません。オンラインの演習にはテスト スイートが付属しているため、現在、スレッドのテスト ケースに進む前に、オプションのテスト ケースに合格するようにしています。

これが私のコードです:

現在、 type が必要であるというエラーが表示されてcloseAccount()いるため、コメントアウトしましたSome[Int] instead of Option[Int]。私がどのように初期化したかを考えると理解できますbalance。に見られるようにの値から への移行方法がわかりませSome[Int]ん。NonecloseAccount()

これを理解する上で、どんな助けもいただければ幸いです。前もって感謝します。

最初の編集: で犯していた愚かな間違いを理解しましたincrementBalancegetBalanceだったのでval、操作後に値を再計算していませんでした。それでも迷ったcloseAccount()

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

scala - オプションでの map() の動作

Play Combinators を介して JSONObject インスタンスを実際のインスタンスにマップしようとしています。デシリアライズ作業を正しく行うことができます。問題は、Option[JSONObject] で map() がどのように機能するかについてです。

オプション1:

_ が正しく解決されないため、動作しません。コンパイルに失敗します。コンパイラは、オブジェクトで toString() を見つけることができませんでした。

オプション 2:

動作します!!。関数の引数の一部として変換が行われたときに、デフォルト変数の Type が伝播されない理由を誰か教えてもらえますか?

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

java - Java で Options と Scala Enumeration を使用してケース クラスをインスタンス化する

ケースクラスに列挙型とオプションの両方がある場合、Java からインスタンス化できないようです。

Scala では次のことを考慮してください。

そして、それらを使用するために Java で以下を実行します。

インスタンス化時にエラーが発生します (少なくとも Eclipse ではエラーが表示されます)が、問題aなく動作します! Javaでインスタンス化する方法はありますか???bcEnumOption

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

scala - Option defers ClassCastExceptionでジェネリックメソッド呼び出しをラップするのはなぜですか?

次のような配列があるとしましょう*:

明らかな理由で失敗します:

次に、次のクラスを考えてみましょう。

私が知る限りgetAs、前の のapply後にasInstanceOf.

驚くべきことに、そうではありません。単独で呼び出すと、例外がスローされます。

しかし、ラップされた場合はOption成功します:

ラップされた値にアクセスしようとした場合にのみ失敗します:

それで、ここで何が起こりますか?制限されているように見えるClassCastExceptionので、型消去のような醜いものに関連していると思います。


*サード パーティのコードの動作を模倣するためAnyasInstanceOf存在するので、それについて詳しく説明しないでください。

** Scala 2.10.5、2.11.7 でテスト済み

*** コンテキストに興味がある場合は、Using contains in scala - exception を参照してください。

**** コメントにリンクされているその他の関連する質問:

0 投票する
5 に答える
10770 参照

scala - Option.empty[A] を使用する必要がある場合と、Scala で None を使用する必要がある場合はいつですか?

Scala では、何かを に設定したい場合None、いくつかの選択肢があります:Noneまたはを使用しOption.empty[A]ます。

どちらかを選択して一貫して使用する必要がありますか? それとも、どちらか一方を使用する必要がある場合がありますか?

例: