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

Scala 3中上下文函数扩展方法调用报错,是否为预期行为?

问题解答

这是Scala 3的预期行为,原因在于扩展方法调用的解析逻辑与上下文函数的特性交互导致:

  • 当使用.调用扩展方法(i.extFoo)时,编译器会尝试将调用转换为extFoo(i),但此时它会把i当作需要上下文依赖的值处理——也就是试图先解析i类型(List[String] ?=> Int)所需的List[String] given实例,但main函数作用域中并没有提供该实例,因此触发报错。
  • 当使用extFoo(i)直接调用时,编译器明确识别到你是将i这个上下文函数值本身作为参数传递,而非要先求值i得到Int。此时i作为上下文函数类型参数传入extFoo,而extFoo内部的foo函数已经提供了List[E]的given实例,因此可以正常执行。

内容的提问来源于stack exchange,提问作者riccardo.cardin

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.24 18:17:13