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

Scala 3中Int Refined Positive无法编译问题咨询

解决Scala 3.2.2 + Refined 0.10.2编译失败问题

你的代码编译失败是因为Scala 3的隐式解析机制和Scala 2存在差异,auto._提供的自动转换无法正常触发。可以通过以下两种方式解决:

方案一:使用显式编译时宏创建实例

改用refineMV宏生成Refined类型实例,这是Scala 3环境下更可靠的方式:

import eu.timepit.refined._
import eu.timepit.refined.api.Refined
import eu.timepit.refined.numeric._

val i1: Int Refined Positive = refineMV(5)

refineMV会在编译阶段验证值是否符合约束,不符合时直接抛出编译错误,和自动转换效果一致,但在Scala 3中兼容性更好。

方案二:补充语法支持导入

添加完整的语法支持导入,确保隐式转换能被正确解析:

import eu.timepit.refined._
import eu.timepit.refined.api.Refined
import eu.timepit.refined.auto._
import eu.timepit.refined.numeric._
import eu.timepit.refined.syntax.all._

val i1: Int Refined Positive = 5

额外说明

Refined 0.10.2对Scala 3的支持虽已完善,但官方文档示例更多基于Scala 2的隐式逻辑,在Scala 3中显式使用refineMV是更推荐的实践,可避免隐式解析的兼容性问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.28 05:12:46