Я часто нахожу себя с Option[T]
для некоторого типа T
и желаю проверить значение параметра против некоторого значения. Например:
val opt = Some("oxbow")
if (opt.isDefined && opt.get == "lakes")
//do something
Следующий код эквивалентен и устраняет необходимость проверки существования значения опции
if (opt.map(_ == "lakes").getOrElse(false))
//do something
Однако это кажется мне менее читаемым. Другие возможности:
if (opt.filter(_ == "lakes").isDefined)
if (opt.find(_ == "lakes").isDefined) //uses implicit conversion to Iterable
Но я не думаю, что они явно выражают намерение, которое было бы лучше, как:
if (opt.isDefinedAnd(_ == "lakes"))
У кого-нибудь есть лучший способ сделать этот тест?