哪些Scala方法返回null而不是Option,为什么?

| 我想知道标准库是否完全没有ѭ0and,并且-如果不是-会感兴趣存在什么合理的用例,其中返回ѭ0to比返回某些
Option
实例更好。     
已邀请:
        NamespaceBinding返回本地名称空间的“ 0”,或者在以下情况下返回未定义的输入。
$ 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]
。     
        我在标准库中看到的唯一的“ 0”位置是可选的正则表达式组。
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
。     
        我什么也没想,所以我在api(inurl:scala-lang.org/api return + null)中做了一个google搜索,它似乎并没有产生任何记录为null的用法。 可能存在som内部使用。我能想到的唯一原因是避免多余的Some-object或与Java轻松集成。两者似乎都不大可能。     

要回复问题请先登录注册