scala - 测试期权值(value)的更好方法是什么?

标签 scala option code-readability

我经常发现自己有一个 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"))

有没有人有更好的方法来做这个测试?

最佳答案

怎么样

if (opt == Some("lakes"))

这清楚地表达了意图并且是直截了当的。

关于scala - 测试期权值(value)的更好方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1611872/

相关文章:

debugging - Gradle-Gradle 2.1的编译问题

c++ - 提高可读性和可维护性 : omit < > for many variable declaration possible?

python - 如何处理 Pylint 的 "too-many-instance-attributes"消息?

php - 是否有满足这些特定标准的 PHP 基准测试?

Scala Option过滤方法疑惑

scala - HList参数为HNil时如何对Json进行编码?

shell - 在 shell 中打印多行 - 提高配置 Vagrantfile 时的可读性

Scala 结束流的简写?

jquery选择多个onchange选择和取消选择选项(在ipad上)

java - 静态分析Option在Java中是否永远不会为null