升级Scala2.12到Scala3
💡
原文中文,约3000字,阅读约需8分钟。
📝
内容提要
本文介绍了作者尝试将自己的Scala2.12项目升级到Scala3的过程。作者提到了升级的思路和具体步骤,以及遇到的一些错误和警告。作者还对一些类型定义和约束的变化进行了讨论。最后,作者提到了一些数据类型转换的警告和方法的废弃问题。
🎯
关键要点
-
作者尝试将Scala2.12项目UtilitiesFX升级到Scala3。
-
升级思路包括复制项目目录、修改artifact名称和更新maven依赖配置。
-
遇到的错误主要是Unit方法必须使用'=',类型转换和方法调用变得更严格。
-
类型转换更严格,要求将Int转换为Double。
-
方法调用必须加括号,不能省略。
-
通配符的使用发生变化,从'_'变为'?'。
-
变量通配符的初始化方式改变,使用uninitialized代替。
-
集合类型转换中,JavaConverters已被弃用,建议使用scala.jdk.CollectionConverters。
-
数据类型转换中,Long到Double的隐式转换被认为不安全,建议使用.toDouble。
-
方法lineStream_!已被弃用,建议使用lazyLines_!
❓
延伸问答
如何将Scala2.12项目升级到Scala3?
可以通过复制项目目录、修改artifact名称和更新maven依赖配置来升级。
在升级过程中遇到了哪些主要错误?
主要错误包括Unit方法必须使用'=',类型转换和方法调用变得更严格。
Scala3中类型转换有什么变化?
Scala3中类型转换更严格,要求将Int转换为Double,并且隐式转换被认为不安全。
Scala3中方法调用的要求是什么?
方法调用必须加括号,不能省略,否则会被认为是方法引用。
Scala3中通配符的使用有什么变化?
通配符的使用从'_'变为'?',例如T[_<:S]变为T[?<:S]。
在Scala3中,如何处理集合类型转换?
建议使用scala.jdk.CollectionConverters替代已弃用的JavaConverters。
➡️