https://mp.weixin.qq.com/s/zwrG1MfUzXwtik7jotpQsA
介绍Intellij IDEA中的一个去除Scala语法糖的功能。
1. 去除语法糖
Scala包含了太多的语法糖,在实现了代码写法比较简洁的同时,也某种程度上降低了代码的可阅读性。
比如变量类型推断。为了知道变量的类型,而不得不去阅读为该变量赋值的代码。为了知道方法的返回值类型,而不得不去看方法的实现。
这个问题可以通过Intellij IDEA添加type annotation的功能实现:
如下:
今天又发现一个可以去除语法糖、更详实的展现代码的功能:Desugar Scala code。
选中要去除语法糖的代码,右键即可呼出菜单:
点击之后,会出现要去除哪些语法糖的选择界面:
不做改变,直接点击OK:
可以看到,代码的阅读性有了很大的提升:
a. 添加了变量类型:val x: UInt
b. 伴生对象的路径及方法:chisel3.Input.apply()
c. 为了调用W方法,而把16进行隐式类型转换调用的方法:chisel3.fromIntToWidth(16)
d. 调用伴生对象Input所传入的隐式参数:(chisel3.core.CompileOptions.materialize)
所有的猫腻都现出原形。(看明白了就还原回去:Ctrl+Z)
2.Functionality
以chisel-tutorial中的Functionality类为例:
3. 不足之处
a. 多次执行结果不一致;
b. 并不是总能去除成功;
4. 例子2
a. ":="为方法名,使用"."调用,并为参数添加括号:io.z.:=()()
b. 添加隐式参数列表的两个参数:SourceInfo, CompileOptions;
5. 例子3
整体转换:
不是很稳定,聊胜于无。