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. Git 获取远程仓库指定分支内容

    1. 在本地一个空的文件夹中 git init  (生成本地仓库) 2. 在刚刚的文件夹中随便建立一个文件 ,git add . (为了生成分支)(提交到暂存区) 3. git commit -m'1 ...

  2. Java种sleep和wait的区别

    1,sleep方法是Thread类的静态方法,wait()是Object超类的成员方法 2,sleep()方法导致了程序暂停执行指定的时间,让出cpu该其他线程,但是他的监控状态依然保持者,当指定的时 ...

  3. shell脚本传参执行spark-submit

    读取多个目录下的本地文件,多个目录通过循环遍历的方式,以参数传递: #!/bin/bash i=0while [ $i -lt 10000 ] do echo "i=$i" spa ...

  4. 003_python的str切片,str常用操作方法,for循环,集合,深浅copy

    基础数据类型 基础数据类型,有7种类型,存在即合理. 1.int 整数 主要是做运算的 .比如加减乘除,幂,取余  + - * / ** %... 2.bool布尔值 判断真假以及作为条件变量 3.s ...

  5. Coursera课程笔记----计算导论与C语言基础----Week 7

    C语言中的数据成分(Week7) 内存 把内存想象成长带,带子上有许多方格,每个方格有8位(8bit) 2^10 = 1024 1B = 8 b 1KB = 1024Byte MB.GB.TB.PB- ...

  6. 【FreeRTOS学习02】源码结构/数据类型/命名规则总结

    个人不是很喜欢FreeRTOS的编程风格,但是没办法,白嫖人家的东西,只能忍了,这里先简单总结一下: 相关文章 [FreeRTOS实战汇总]小白博主的RTOS学习实战快速进阶之路(持续更新) 文章目录 ...

  7. 【matlab系列汇总】小白博主的matlab学习实战快速进阶之路(持续更新)

    我把之前在学习和工作中使用matlab的技巧和使用教程等相关整理到这里,方便查阅学习,如果能帮助到您,请帮忙点个赞: MATLAB可以进行矩阵运算.绘制函数和数据.实现算法.创建用户界面.连接其他编程 ...

  8. STM32 标准库3.5修改默认外部8M晶振为16M晶振

    ST官方标准库V3.5默认的外部晶振频率为8M,实际使用中外部晶振需要修改为16M: 经过实验,修改有效,具体的patch如下: 修改 HSE_VALUE 值 diff --git "a/L ...

  9. 使用Optional,不再头疼NPE

    前言 在 Java 语言开发中,可能大多数程序员遇到最多的异常就是 NullPointException 空指针异常了.这个当初语言的开发者"仅仅因为这样实现起来更容易"而允许空引 ...

  10. idea 2020 配置本地 Maven 仓库

    问题: 默认Maven 仓库地址在C盘,C盘是系统盘能少放东西尽量少放. 只需要简单的两步 1.File~Settings 然后搜索 maven 如下图绿框 修改成你自己的 Maven 仓库 2.Fi ...