gpt4 book ai didi

scala - Regex.MatchData 返回 null : why not Option[String]?

转载 作者:行者123 更新时间:2023-12-03 12:12:31 25 4
gpt4 key购买 nike

Regex.MatchData.group(i: Int): java.lang.String 返回 null 而不是 Option[String] 有什么特别的原因吗?

Scala 中是否有“Scala 方式”来处理空值?

最佳答案

它返回 null 因为它是 Java 库上的浅接口(interface)。我也觉得它很烂,我已经被它咬了。

如果你得到一个可能为空的值,你可以写Option(value)在 Scala 2.8 上,它将变为 NoneSome(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

关于scala - Regex.MatchData 返回 null : why not Option[String]?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1842925/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com