Scala 3.6.2中IntelliJ提示given...with语法过时的正确替代方案
Scala 3.6.2 中给定实例的正确定义语法
针对你遇到的问题,Scala 3.6.2 里符合 IntelliJ 提示的正确写法有两种:
写法一:冒号+换行缩进(推荐)
把原代码里的with换成冒号,保持方法体的缩进即可:
given stringDisplay: Display[String]: def display(input: String) = input
如果之前编译失败,先确认项目的 Scala 版本是否配置为 3.6.2,或是尝试清理 IntelliJ 缓存(Invalidate Caches/Restart)。
写法二:花括号包裹实现块
通过匿名类形式实现,注意要用=连接类型和实现逻辑:
given stringDisplay: Display[String] = { new Display[String]: def display(input: String) = input }
也可以简化成无花括号的换行写法:
given stringDisplay: Display[String] = new Display[String]: def display(input: String) = input
关于语法变更说明
原代码里的given ... with写法是 Scala 3 早期版本的语法,在新版本中已被弃用,所以 IntelliJ 会弹出警告。官方文档可能存在更新不及时的情况,以当前版本的编译器和 IDE 提示为准。
内容的提问来源于stack exchange,提问作者Abhijit Sarkar
相关产品推荐
相关产品推荐

