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

Scala 3 Match Type结合F-Bounded类型出现Cannot prove编译错误求解

Scala Match Type 匹配带F-Bounded约束类型失败问题说明

根因分析

你为UnitOfMeasure添加F-Bounded泛型约束后,匹配类型Test的分支规则没有同步对齐泛型约束,导致编译器判定匹配不成立:

  • 未加F-Bounded约束时,UnitOfMeasure的泛型参数无边界要求,case UnitOfMeasure[t] => t中的无边界类型变量t符合参数要求,匹配成功。
  • 添加A <: Quantity[A]约束后,UnitOfMeasure的泛型参数必须满足F-Bounded规则,但你写的匹配分支里的t还是无边界状态,编译器认为t不满足UnitOfMeasure的参数约束,直接判定该分支无效,所以匹配类型无法正常规约。

解决方案

只需给匹配分支的类型变量加上对应F-Bounded约束即可:

type Test[X <: UnitOfMeasure[?]] = X match
  case UnitOfMeasure[t <: Quantity[t]] => t

修改后两个summon语句即可正常编译通过。

内容的提问来源于stack exchange,提问作者Simão Martins

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 18:48:04