-2

重複の可能性:
なぜ Option[T] なのか?

私のプロジェクトに問題があります

値 [some (test)] からデータを取得し、(test) の値のみを取得するにはどうすればよいですか。getメソッドを使用していますか?

また

value: [some (test)] の形式を「test」に変更するにはどうすればよいですか

4

1 に答える 1

3

基本的に、get() は使用しないでください。それが代替案よりも優れた選択肢であるという状況はありません。オプションは、関数が必要なものを返さない可能性があることを型システムで示す方法です。0 個または 1 個のものが含まれるコレクションと考えることができます。

Option を処理するいくつかの異なる方法を示すAPI ドキュメントを見てください。map/flatMap、getOrElse、内包表記、およびパターン マッチングを使用するコレクションとして。

例: マップ:

val maybeData : Option[String] = Some("test")  // or None
val maybeResult = maybeData.map(x : String => doSomethingWithAString(x))

MaybeData が None の場合、何も起こりません。Some() の場合、doSomethingWithAString() の結果を含む Option が返されます。これは Option[B] であり、B は doSomethingWithAString の戻り型であることに注意してください。

例: getOrElse:

val maybeData : Option[String] = Some("test")  // or None
val result : String = maybeData.getOrElse("N/A")

データが Some の場合、結果は「test」、それ以外の場合は「N/A」です。

例: パターン マッチング:

val maybeData : Option[String] = Some("test")  // or None
val result : String = maybeData match {
  case Some(x) => doSomethingWithAString(x)
  case None => "N/A"
}

画像が得られます (これは、doSomethingWithAString が String を返すことを前提としていることに注意してください)。

get() を使用し、おそらくData が None の場合、nullpointers と同等のものを処理する喜びを得ることができます。誰もそれを望んでいません。

于 2012-08-10T21:03:12.520 に答える