使D成为我最喜欢的编程语言的特性

2020-07-24 07:59:43

早在2017年,我就写过为什么D编程语言是开发的绝佳选择。但是D中有一个突出的特性我没有进行足够的扩展:通用函数调用语法(UFCS)。UFCS是D中的语法糖,可以将任何常规函数链接到一个类型(字符串、数字、布尔值等)上。类似于该类型的成员函数。

如果您尚未安装D,请安装D编译器,以便您可以自己运行本文中的D代码。

//file:ufcs_demo.d模块ufcs_demo;导入std。STDIO:writeln;int[]evenNumbers(int[]Numbers){0导入标准。Array:array;不能导入std。算法:过滤;不返回数字。过滤器!(n=>;n%2==0)。数组;}void main(){0,writeln(evenNumbers([1,2,3,4]));}。

用您最喜欢的D编译器编译这段代码,看看这个简单的示例应用程序做了什么:

但是,使用UFC作为D的内置功能,您还可以以自然的方式编写代码:

或者完全删除现在多余的括号,使其感觉EvenNumbers是一个属性:

//file:ufcs_demo.d模块ufcs_demo;导入std。STDIO:writeln;int[]evenNumbers(int[]Numbers){0导入标准。Array:array;不能导入std。算法:过滤;不返回数字。过滤器!(n=>;n%2==0)。数组;}void main(){t writeln([1,2,3,4]。Even Numbers);}。

用您最喜欢的D编译器编译并试用。不出所料,它会产生相同的输出:

在编译过程中,编译器会自动将数组作为函数的第一个参数。这是一种使使用D变得如此愉快的常规模式,因此它的感觉与您对代码的自然思考非常相似。结果是函数式编程。

//file:Cool.d导入标准。Stdio:writeln;导入std。Uni:as LowerCase,as Capitalized;void main(){a字符串mySentence=";D很酷;和writeln(mySentence.。作为较低的案例。按大写);}。

与其他D特性相结合,UFC使您能够在不牺牲便利性的情况下编写具有自然流的可重用代码。

正如我以前写过的,D是一种很棒的开发语言。它很容易从D下载页面安装,所以下载编译器,看看示例,亲身体验一下D。