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
 
整体转换:
 
 
不是很稳定,聊胜于无。
 

Scala - 语言专家 - Desugar Scala code的更多相关文章

  1. Chisel3 - Scala语言专家

    https://mp.weixin.qq.com/s/j8mt_qvwliKIKtlN6JcyqQ   介绍Intellij IDEA安装Scala插件后,如何在阅读和编码两方面助益开发者.     ...

  2. 影响Scala语言设计的因素列表

    Scala语言设计概述 Scala的设计受许多编程语言和研究思想的影响.事实上,仅很少的Scala的特点是全新的:大多数都已经被以另外的形式用在其他语言中了.Scala的革新主要来源于它是如何构造并放 ...

  3. Scala入门到精通——第一节 Scala语言初步

    本节主要内容 Scala简单介绍 为什么要学习Scala Scala语言初步 1. Scala简单介绍 Scala(Scala Language的简称)语言是一种能够执行于JVM和.Net平台之上的通 ...

  4. Scala语言介绍一

    为什么学习scala语言 Scala是基于JVM的语言,与java语言类似,java语言是基于JVM的面向对象的语言,Scala也是基于JVM,同时支持面向对象和面向函数的编程语言.Spark底层的源 ...

  5. Go 语言和 Scala 语言对比

    我在Google写过Go(自己的业余时间),也在LinkedIn写过Scala.两者都是具有一流的并发特性的现代语言. 下面的回答是基于我编写大规模的软件的经验得出. Go是一种开发模式严格固定,并且 ...

  6. Scala语言简介和开发环境配置

    Scala语言的简介和开发环境搭建 Scala是一门结合了面向对象特征和函数式编程特征的语言,它是一个创新的编程语言产品.Scala可以做脚本(就像shell脚本一样),可以做服务端编程语言,可以写数 ...

  7. 也谈在 .NET 平台上使用 Scala 语言(续)

    而我是在 Ubuntu 操作系统中使用 Scala.NET 的,应该没有这个问题. 那么,就让我们来測试一下吧. 如今,我们添加一个 DotNet.cs 文件,例如以下所看到的: 1 2 3 4 5 ...

  8. 利用Scala语言开发Spark应用程序

    Spark内核是由Scala语言开发的,因此使用Scala语言开发Spark应用程序是自然而然的事情.如果你对Scala语言还不太熟悉,可 以阅读网络教程A Scala Tutorial for Ja ...

  9. Scala语言初识

    scala是一种集面向对象特性和函数式特性于一身并可运行在JVM上的强类型静态语言.因为可以运行在JVM上,并在设计时借鉴于大量的java语言特性,故可以和java互动并可以调用java相关类库,这让 ...

随机推荐

  1. Json格式数据的解析

    JSON是一种轻量级的数据交换格式,我们在编程中遇到的JSON数据通常就是一串字符串,只不过按照特定的格式去书写,这样当你把JSON数据传输给别人的时候对方只要使用这种特定的规则去阅读解析你的数据即可 ...

  2. CF-163A Substring and Subsequence 字符串DP

    Substring and Subsequence 题意 给出两个字符串s,t,求出有多少对s的子串和t的子序列相等. 思路 类似于最长公共子序列的dp数组. dp[i][j]表示s中以i为结尾的子串 ...

  3. ZOOM火速收购加密公司Kaybase 能否补齐安全短板?

    近日,一直因为安全漏洞饱受批评的云视频会议协作工具ZOOM,,其公司全资收购一家初创企业Kaybase,以加强ZOOM系统的隐私保护和安全性.   Kaybase公司官网 2020年年初,随着疫情的蔓 ...

  4. python 数据类型: 字符串String / 列表List / 元组Tuple / 集合Set / 字典Dictionary

    #python中标准数据类型 字符串String 列表List 元组Tuple 集合Set 字典Dictionary 铭记:变量无类型,对象有类型 #单个变量赋值 countn00 = '; #整数 ...

  5. gets() 、 getchar() 、 getch() 、getche()、gets()、 scanf()的区别

    1.getchar().getche().getch() (1).getchar 函数用于从标准输入设备键盘读入单个字符,返回表示读入字符的ASCII码值,并在屏上显示该字符:头文件是 stdio.h ...

  6. POI 导入excel数据自动封装成model对象--代码

    所有的代码如下: import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; ...

  7. java ->String、StringBuffer、StringBuilder三者之间的区别

    1.首先说运行速度,速度由快到慢排列:StringBuilder > StringBuffer > String String最慢的原因: String为字符串常量,而StringBuil ...

  8. 2018-06-30 js事件

    一.js代码加载的时机 1.DOM加载完毕 -> 将js代码放到body体之下即可: 2.网页资源加载完毕-> $(window).onload(function(){  }); 3.jQ ...

  9. Vue element-ui date-picker 结束时间大于开始时间且开始时间小于此刻(转)

    转载自:https://blog.csdn.net/wintersweetGirl/article/details/82461412 <el-form ref="form" ...

  10. 情人节闷在家里做画( 安卓统计图MPAndroidChart开发 )

    有些时候觉得一个人挺好的,可以更自由安排自己的时间: 有些时候觉得有个人挺好的,很多事情一个人做起来太没意思了,纵使心中澎湃,倾听的独有自己. 废话少说,直接上图 MPAndroidChart是啥 一 ...