You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用for comprehension对Option[Seq[MyItem]]查找指定description的项?

Scala 用for推导实现Option[Seq[MyItem]]的匹配判断

首先给出前提定义示例:

// MyItem定义示例,假设为样例类
case class MyItem(description: String)

// 待判断的源数据结构
val itemsOpt: Option[Seq[MyItem]] = ???
// 要匹配的目标description值
val targetDesc: String = "指定的匹配值"

for推导实现代码

val hasMatch: Boolean = (for {
  items <- itemsOpt // 解包Option,若为None推导直接返回None
  item <- items // 遍历序列中的每一个MyItem实例
  if item.description == targetDesc // 过滤出description匹配的项
} yield ()).nonEmpty

逻辑说明

  • 如果itemsOpt本身是None,整个for推导的结果就是None,调用nonEmpty返回false,符合「没有序列自然不存在匹配项」的预期
  • 如果itemsOpt是Some(序列),只要序列中存在至少一个description等于目标值的MyItem实例,for推导就会返回Some(()),nonEmpty结果为true;如果所有项都不匹配,推导结果为None,返回false

补充说明

如果没有强制要求用for推导,更简洁的原生方法调用写法如下,效果完全一致:

val hasMatch: Boolean = itemsOpt.exists(_.exists(_.description == targetDesc))

内容的提问来源于stack exchange,提问作者Mandroid

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.25 04:45:00