我在Java福音8章经常听到“sugaring”和“desugaring”,这两个词是什么意思?它们是概念性的还是句法性的。
例如:
默认迭代循环恢复为Java
关于编译中的句法糖的观察。
“脱俗语”在Java福音8章似乎有一个非常具体的含义。它似乎是一个包罗万象的术语,用来表示lambda表达式可能绑定到实际的具体方法调用的各种方式。
如果您对细节感兴趣,这篇关于“Lambda表达式的翻译”的文档提供了正在发生的事情的真实细节。
文档中的一个关键短语:
将lambda转换为字节码的第一步是将lambda主体解聚为一个方法。
在编程中,sugar通常指的是那些甜蜜的添加,主要是快捷方式,它们使某些构造更易于键入和阅读(实际上,后者在程序的生命周期中是最重要的)。
Wikipedia有句法糖的定义,但您应该注意,并非所有的糖本质上都是句法的(并非所有最近的sweet添加都只是编译器的更改)。
以下是几个例子:
i++
和++i
)。他们唯一的目的是避免写额外的声明。它们是纯糖。+=
,=
,&=
等都是由同一种糖制成的。Java被普遍认为不够简洁,特别是与现代html" target="_blank">语言相比。这就是为什么那些帮助代码更快阅读的添加是受欢迎的。
最后,我要指出的是,虽然缺乏糖会使你的程序变得肥胖,但过多的糖会导致用多种不同的方法来编写相同的东西,会使你的语言变得反胃,使你的程序更不连贯,更难维护。另一种糖,API糖,通常是一种瘟疫,使API更难掌握,特别是当它是由添加(例如超载)。
话虽如此,desugaring指的要么是
Java 的语法比 C/C++ 友好很多, 因为它设计之初,就是为了考虑到程序员的使用是否舒适。 当然很多事情愿望是美好的,现实是残酷的。Java 语言本身的语法仍然不可避免的带有着 10年前那种 的僵硬和严谨。这里是一些小小的尝试,你会发现,大多数情况,通过一些静态函数,一行代码完全 可以做很多事情, 而且比“甜甜”的 Ruby 也差不了太多。 你可以查看 org.nutz.lang Git@O
在输出的唯一一行上,打印一个整数,描述Alice必须给出的糖果的最小数量。 爱丽丝必须给的糖果数是1、2和1。 且每个子级的分级不大于10^5。
我是新来的javascript/玉。我正试图创建一个简单的例子,在一个玉模板文件中使用甜言蜜语2。当我运行以下内容时,我会收到“帮助我”警报,但当我到达swal线时,我会收到: ReferenceError:未定义swal 应该注意的是,我是在一个基于express/node.js的玩具应用程序中运行它的。通过从代码中复制位置并将它们插入浏览器上的另一个选项卡,我已经验证了sweetalert2.
我试图在我的代码中使用PrimitiveIterator.Ofint、PrimitiveIterator.Oflong等。我的最小SDK版本是16,因此为了获得对Java8类和接口的支持,我遵循了如下所示的API desugaring步骤: https://developer.android.com/studio/write/java8-support#Library-desugaring 在这之
求帮忙看看原因,感谢!
问题内容: 我已经看到了声明,接口和类 这是什么意思? 问题答案: 没有证据,我相信您在谈论Java的泛型支持… 泛型允许您抽象类型 在Java 5之前,很难提供能够支持多种不同类型的Objects的类而不必为每种特定情况编写代码,因此人们通常会这样做。 这导致在运行时做出许多困难的选择,您必须进行运行时检查以查看是否有可能将给定的Object强制转换为可用类型…例如 现在,这已经很明显了,但是如