语法糖

语法糖英语:)是由英国计算机科学家彼得·兰丁发明的一个术语,指计算机语言中添加的某种语法,这种语法对语言的功能没有影响,但是更方便进程员使用。语法糖让进程更加简洁,有更高的可读性。

举例来说,许多进程语言提供专门的语法来对数组中的元素进行引用和更新。从理论上来讲,一个数组元素的引用涉及到两个参数数组下标矢量,比如这样的表达式:get_array(Array, vector(i, j))。然而,许多语言支持这样直接引用:Array[i, j]。同理,数组元素的更新涉及到三个参数:set_array(Array, vector(i, j), value),但是很多语言提供直接赋值:Array[i, j] = value

语法糖的例子

for循环

一个例子是C语言中的for循环:

for (i = 0; i < 10; i++) {
    // P
}

其效果在不考虑for循环中的continue语句时和以下的while循环是一样的,其中P是循环要处理的主体。

i = 0;
while (i < 10) {
    // P
    i++;
}

中置表示法

Haskell虽然是函数编程语言,但它提供了a + b这种「中置表示法」的语法,让程序更容易撰写,也比较容易阅读。

运算符重载

C++提供了运算符重载,可以把运算符当作函数来写,当使用操作符就等同于使用该函数,让程序更容易撰写,也比较容易阅读。

关联数组

JavascriptLua中对象的「」如果不使用底线以外的符号、数字不做开头时可以使用对象成员方式来取的「」。若不符合上述规则仅能使用数组索引方式取得「值」。

以Javascript来举例:

let a = { 'abc': 5, '12w': 6, '>': 7, '_': 8 };

console.log(a.abc);     //因为「键」符合规则,所以可以直接使用对象成员方式来取得「值」。
console.log(a["abc"]);  //也能用数组索引的方式取得「值」。
console.log(a["12w"]);  //因为「键」是数字开头,所以仅能以数组索引方式取得「值」。
console.log(a[">"]);    //因为「键」有使用到符号,所以仅能以数组索引方式取得「值」。
console.log(a._);       //虽然「键」有使用到符号,但是因为Javascript中底线可以当作变量名称,所以可以使用对象成员方式来取得「值」。

差异在于如果使用数组索引的话「键」需要加上「中括号」和「字符串引号」,但是对象成员只要加上「小数点」能让代码看起来更加简洁。

衍生词语

语法盐

语法盐英语:)指的是不容易写出坏代码的语法特性。这些特性强迫进程员做出一些基本不用于描述进程行为,而是用来证明他们知道自己在做什么的额外举动。

语法糖精

语法糖精英语:),或者说语法糖浆英语:),指的是未能让编程更加方便的附加语法[1][2]

注释

  1. . catb.org. [2015-08-03]. (原始内容存档于2017-04-07).
  2. Boiten, Eerke A.; Möller, Bernhard. . Springer Science & Business Media. 2002-06-26: 93. ISBN 978-3-540-43857-1 (英语).

参考文献

This article is issued from Wikipedia. The text is licensed under Creative Commons - Attribution - Sharealike. Additional terms may apply for the media files.