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

Scala for-yield实现两个集合类Left Join操作,兼容空集合场景

可以,仅需对charms做一层可选包装即可,写法和原代码几乎一致:

def hocusPocus(spells: Seq[String], charms: Seq[String]): Seq[Magic] = {
  for {
    spell <- spells
    charmOpt <- if (charms.isEmpty) Seq(None) else charms.map(Some(_))
  } yield new Magic(spell, charmOpt)
}

逻辑说明:

  • 非空场景下和你原有代码行为完全一致,生成spells和charms笛卡尔积对应的Magic实例,第二个参数为Some包装的charm值
  • 当charms为空时,我们提供了仅包含单个None的序列用于配对,每个spell都会对应生成一个Magic实例,第二个参数为None,符合需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 07:12:03