質問

なぜRegex.MatchData.group(I:INT):特定の理由がjava.lang.Stringではむしろオプションよりもnullを返します[文字列]

は?

ScalaでNULL値を処理するための "Scalaの道" はありますか?

役に立ちましたか?

解決

それはJavaライブラリの上に浅いインタフェースであるため、

これは、nullを返します。私はそれがあまりにも吸うと思うし、私はそれにかまれています。

あなたがnullの場合も値を取得する場合は、

、あなたはScalaの2.8にOption(value)を書くことができ、それがNoneまたはSome(value)のいずれかになります。これは、パターンマッチングでは動作しませんが、そのために独自の抽出を書くことができます:

object Optional {
  def unapply[T](a: T) = if (null == a) Some(None) else Some(Some(a))
}

例:

scala> val a:String = null
a: String = null

scala> a match {
     | case Optional(None) => println("Got none")
     | case Optional(Some(value)) => println("Got "+value)
     | }
Got none

scala> val a = "string"
a: java.lang.String = string

scala> a match {
     | case Optional(None) => println("Got none")
     | case Optional(Some(value)) => println("Got "+value)
     | }
Got string

scala> val a = "5"
a: java.lang.String = 5

scala> a match {
     | case Optional(None) => println("Got none")
     | case Optional(Some(value)) => println("Got "+value.toInt)
     | }
Got 5
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top