我在 Java 8 中经常听到“加糖”和“脱糖”,这些术语是什么意思?它们是概念性的还是句法性的。
一些例子:
Default iterated loop resugaring to java
Observations about syntactic sugar in compilation.
最佳答案
sugar,在编程中,通常是指那些 sweet 添加,主要是快捷方式,使某些结构更易于键入和阅读(后者实际上是,在程序的生命周期中最重要)。
维基百科有一个定义 syntactic sugar但是您应该注意,本质上,并非所有的糖都是语法的(并非所有最近的甜蜜添加都只是编译器的更改)。
这里有几个例子:
- 后缀和前缀递增运算符(
i++
和++i
)。他们的唯一目的是避免写额外的声明。它们是纯糖。 +=
、|=
、&=
等都是由同一种糖制成的。- 原始类型和对象之间的隐式转换也是糖。
- 类型推断也是糖。
- Java 8 附带的 Lambda 表达式是另一种糖(这个不仅仅是语法)
Java 被广泛认为不够简洁,尤其是与现代语言相比。这就是为什么那些有助于使代码更快阅读的添加受到欢迎的原因。
最后,我只想指出,虽然缺少糖会使您的程序变胖,但过多的糖会导致编写相同内容的多种不同方式,这会使您的语言变得令人不安,并且您的程序不那么连贯和更难维护。另一种糖,API 糖,通常是一种瘟疫,它使 API 更难掌握,尤其是当它由添加(例如重载)组成时。
话虽如此,desugaring 指的是
- 删除语言中所有多余内容的过程
- 代码处理器找出含糖语句背后的内容的过程(例如,这可能涉及类型推断)
关于java - Java 8 上下文中的 "sugar"、 "desugar"术语是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22060894/