Scala 检查对象是否是选项

Scala check if object is an Option or not

我想检查一个对象是否是一个选项。

例如:

val foo: Option[String] = Some("foo")
val bar: String = "bar"

我想要一个函数 isOption:

def isOption(value: Any): Boolean = {
     ???
}

结果将是:

isOption(foo) // true
isOption(bar) // false

你可以把你的函数写成

def isOption(value: Any): Boolean = {
  value match {
    case x : Option[_] => true
    case _ => false
  }
}

关于调用函数

val foo: Option[String] = Some("foo")
val bar: String = "bar"

你会得到一个输出

res0: Boolean = true
res1: Boolean = false

一个简短的解决方案是

value.isInstanceOf[Option[_]]

这也不会混淆这样一个事实,即您基本上没有类型化 Any 值和 instanceof 在您的代码中飞来飞去,如果可能的话,应该避免这种情况。