オプションの値を取得するか,例外を投げる
2023-08-07 23:02:15
質問
Optionが与えられたとき、その値を取得したり、例外をスローしたりするためのイディオム的な方法は何ですか?
def foo() : String = {
val x : Option[String] = ...
x.getOrException()
}
どのように解決するのですか?
(編集: この方法はベストでもイディオムでもありません。私はScalaに精通していないときにこれを書きました。私はそれをここに残して、どのように ではなく を行う方法の例としてここに残しておきます。今なら@TravisBrownのようにします)
本当に2つのことに集約されると思います。
- どのように 確か がそこにあると確信していますか?
- どのように 反応する でない場合は?
もし、あなたのコードのその時点で
を期待します。
を期待し、そうでない場合はプログラムに
失敗
を速くしたいのであれば、私は通常の
get
を投げて、Scalaに
NoSuchElementException
を投げるようにします。
def foo() : 文字列 = { val x : Option[String] = ... x.get }
もし、このケースを別の方法で処理したい(独自の例外を投げる)なら、よりエレガントな方法は次のようになると思います。
def foo(): 文字列 = { val x: Option[String] = None xのマッチング ケース Some(value) => value case None => throw new MyRuntimeException("blah") } }
そしてもちろん、もしあなたが
Option
が
None
を使用する場合、単に
getOrElse
:
def foo(): 文字列 = { val x: オプション[String] = None x.getOrElse("私の代替値") }
関連
-
[解決済み】タイプセーフのenum型をモデル化する方法は?
-
[解決済み】Scalaの名前による呼び出しと値による呼び出し、明確化の必要性
-
[解決済み] リスト[Option]からNoneを除外するには?
-
[解決済み] 単純な case class の順序を定義する簡単な慣用的方法
-
[解決済み] Scalaでmapを使用してインデックスを受け取るにはどうしたらいいですか?
-
[解決済み] Mapにkeyやvalueが存在するかどうかを確認するには?
-
[解決済み] Abstract ClassとTraitの違い[重複]について
-
[解決済み] Scalaの場合 クラス継承
-
[解決済み] Scalaのコレクションにenrich-my-libraryパターンを適用するにはどうしたらいいですか?
-
[解決済み] 複数の先物を待つには?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] Scalaの配列の初期化
-
[解決済み] Any、AnyVal、AnyRef、Objectの関係と、Javaコードでのマッピングについて教えてください。
-
[解決済み] ジッパーがコモナドである理由を理解する
-
[解決済み] Scalaの慣用表現「flatmap that s*** 」はどこから来たのか?
-
[解決済み] Scalaの定数の命名規則?
-
[解決済み] Scalaのtraitでvalとdefの使い分けは?
-
[解決済み] Scalaを使用したJoda Timeのクラスブロークンエラー
-
[解決済み] Scala における => と () => の意味 [重複].
-
[解決済み] Scalaの複数型パターンマッチ
-
[解決済み] Scalaの複数パラメータリストと複数パラメータ/リストの違いは何ですか?