Scala检查对象是否为选项

时间:2018-10-15 11:50:27

标签: scala monads

我想检查对象是否为选项。

例如:

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

我想要一种isOption的功能:

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

结果将是:

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

2 个答案:

答案 0 :(得分:5)

您可以将函数编写为

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

答案 1 :(得分:4)

一个简短的解决方案是

value.isInstanceOf[Option[_]]

这也不会掩盖您实际上未键入Any值和instanceof在代码中四处飞散的事实,如果可能的话,应该避免这种情况。