我想知道标准库是否是完全null
免费的,如果不是,我会感兴趣存在哪些合理的用例,其中返回null
比返回某些Option
实例更可取。
问问题
679 次
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 回答