Я часто встречаюсь с 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"))
Кто-нибудь есть лучший способ сделать это испытание?
ДУХ! Иногда я могу быть очень глупым –
Ну, это случается со мной все время ;-) –
Иногда самое простое решение - лучшее :) –