1.Scala3 浅尝
Scala3 浅尝
自从Scala3于年5月日正式发布以来,源码已经更新了多个小版本,源码预计很快将迎来3.2.0版本。源码我过去有较多的源码Scala2./2.使用经验,但最近没有实际项目可用,源码因此没有机会实际体验Scala3。源码qq管家加速源码最近有空闲时间,源码将一些库迁移到Scala3,源码记录一些体会。源码
在学习新的源码编程语言时,一个好的源码IDE支持能极大提高效率。我之前在IDEA中编写Scala2代码。源码目前IDEA对Scala3的源码html精美网页源码支持还处于可用阶段,但还有不少不足,源码期待在未来的源码版本中得到优化。当前IDE水平对Scala3推广仍然存在阻碍,因为IDE的依赖度非常高。
在迁移过程中,发现大多数Scala2代码可以简单迁移至Scala3,176代刷源码甚至直接复制源代码。官方提供了良好的迁移指南。但在迁移Scala-sql和编写新wsql库时,我选择放弃Scala2兼容语法,以亲身体验Scala3的新风格。虽然Macros迁移较为困难,凌风验证源码Scala3的Macros实现与Scala2不兼容,API概念虽相似但API完全不同。我花了大约两个周末完成第一个Macro迁移,随后速度加快,逐渐掌握了窍门,并整理了文档,cc攻击源码下载准备进一步分享。
调试Macros时,善用IDE的调试器,了解各个数据结构至关重要。在IDEA中开启远程调试,可以将sbt命令执行时的宏代码调试起来。结合Macro和inline是有趣实践,Scala-sql在2.0.X版本中生成的ResultSetMapper存在开销,但在Scala3中尝试结合Macro和inline,实现了“zero-cost”的ResultSetMapper。Java框架往往忽视开销,Scala-sql生成的代码质量更优,享受编译时期静态类型检查带来的好处。
在开发新接口自动化测试平台时,考虑使用Scala DSL来提供简单易用的用户界面。Scala3的Context Function简化了DSL编写,具体案例完成后将提供演示。此外,Scala3的Null Safe特性尚在实验阶段,我对其非常感兴趣。在Java中,null和NPE是普遍的错误使用模式,Kotlin/Dart等语言拥抱了Null Safe特性。利用这个新特性,发现了一些Scala-sql中没有妥善处理null的问题,当前将其放入scala3-nullsafe分支,待稳定后合并到master分支。