Scala проверяет, является ли объект опцией или нет - PullRequest
0 голосов
/ 15 октября 2018

Я хотел бы проверить, является ли объект опцией.

Например:

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

Мне бы хотелось, чтобы функция вида isOption:

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

И результат будет:

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

Ответы [ 2 ]

0 голосов
/ 15 октября 2018

Короткое решение было бы

value.isInstanceOf[Option[_]]

Это также не могло бы омрачить тот факт, что у вас по существу нетипизированные Any -значения и instanceof летает в вашем коде, что должно бытьпо возможности избегать.

0 голосов
/ 15 октября 2018

Вы можете написать свою функцию как

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
...