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

调用collectFirst时多case分句偏函数的分支匹配优先级问题

Scala collectFirst 方法匹配逻辑解答

问题描述:我定义了一个偏函数用于集合的collectFirst方法,代码如下:

myList.collectFirst{
  case A(_,_,_) => ....
  case B(_,_,_) => ....
  case C(_,_,_) => ....
}

如果myList中同时存在A、B、C三类元素,请问上述代码会执行哪个case分支的逻辑?

具体执行哪个case分支,完全取决于myList的元素存储顺序:

  • collectFirst 会按照集合的从左到右遍历顺序逐个检查元素,找到第一个可以匹配偏函数中任意case的元素后,就会执行该元素命中的case逻辑,直接返回结果,不会再检查后续元素,也不会触发其他case。

举个实际示例:
如果myList的元素顺序为 List(B(1,2,3), A(4,5,6), C(7,8,9)),第一个元素是B类型,那么只会执行case B(_,_,_) =>对应的逻辑,后面的A、C元素和对应case都不会生效。

额外说明:如果存在类型继承关系导致单个元素可以匹配多个case(比如A是B的父类),才会按照case的编写顺序从上到下匹配,优先触发第一个命中的case。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 10:09:03