11

標準ライブラリが完全に無料であるかどうか、そうでない場合は、インスタンスを返すよりも返す方が望ましいnull合理的なユースケースが存在するかどうかに関心があるのではないかと思います。nullOption

4

3 に答える 3

5

null標準ライブラリで使用されているのは、オプションの正規表現グループだけです。

scala> val number = """(\d+)(\.\d+)?""".r // matches digits optionally followed by a . and more digits
number: scala.util.matching.Regex = (\d+)(\.\d+)?
scala> "12" match {
     |   case number(intPart, decimalPart) => (intPart, decimalPart)
     | }
res0: (String, String) = (12,null)

Option[String]ここでの理由は、すべてのグループに使用したくないということだと思います。これにより、グループがオプションでない場合、コードが不必要に不器用になります。残念ながら、グループがオプションであるかどうかはコンパイル時にわかりません。つまりOption[String]、すべてのグループまたはnull一致しないグループのいずれかです。

于 2011-05-30T22:26:49.263 に答える
5

NamespaceBindingは、ローカル名前空間を返すnullか、次の場合は未定義の入力を返します。

$ scala
Welcome to Scala version 2.9.0.1 (Java HotSpot(TM) 64-Bit Server VM, Java 1.6.0_24).
Type in expressions to have them evaluated.
Type :help for more information.

scala> (<foo/>).scope.getURI("something")
res0: String = null

Stringの代わりに使用している理由Option[URI]はわかりません。

于 2011-05-30T22:42:21.717 に答える
-1

私は何も考えられないので、APIでグーグル検索を行い(inurl:scala-lang.org/api return + null)、それはnullの文書化された使用をもたらさなかったようです。

内部使用が存在する可能性があります。それを行うために私が考えることができる唯一の理由は、余分なSome-objectを回避するか、Javaと簡単に統合することです。どちらもありそうもないようです。

于 2011-05-30T22:03:09.773 に答える