Linux中國
我最喜歡的 D 語言功能
早在 2017 年,我就寫過為什麼 D 語言是開發的絕佳選擇的文章。但是 D 語言中有一個出色的功能我沒有充分的展開介紹: 通用函數調用語法 (UFCS)。UFCS 是 D 語言中的一種語法糖,它可以在類型(字元串、數字、布爾值等)上鏈接任何常規函數,就像該類型的成員函數一樣。
如果你尚未安裝 D 語言,請安裝 D 語言編譯器,以便你可以自己運行 D 代碼。
看一下以下示例代碼:
// file: ufcs_demo.d
module ufcs_demo;
import std.stdio : writeln;
int[] evenNumbers(int[] numbers)
{
import std.array : array;
import std.algorithm : filter;
return numbers.filter!(n => n % 2 == 0).array;
}
void main()
{
writeln(evenNumbers([1, 2, 3, 4]));
}
使用你喜歡的 D 語言編譯器進行編譯,查看這個簡單示例應用做了什麼:
$ dmd ufcs_demo.d
$ ./ufcs_demo
[2, 4]
但是,使用作為 D 語言的內置功能的 UFCS ,你還可以自然方式編寫代碼:
...
writeln([1, 2, 3, 4].evenNumbers());
...
或完全刪除現在多餘的括弧,使 evenNumbers 看起來像是一個屬性:
...
writeln([1, 2, 3, 4].evenNumbers); // prints 2, 4
...
因此,完整的代碼現在變為:
// file: ufcs_demo.d
module ufcs_demo;
import std.stdio : writeln;
int[] evenNumbers(int[] numbers)
{
import std.array : array;
import std.algorithm : filter;
return numbers.filter!(n => n % 2 == 0).array;
}
void main()
{
writeln([1, 2, 3, 4].evenNumbers);
}
使用你最喜歡的 D 語言編譯器進行編譯,然後嘗試一下。 如預期的那樣,它產生相同的輸出:
$ dmd ufcs_demo.d
$ ./ufcs_demo
[2, 4]
在編譯過程中,編譯器自動地將數組作為函數的第一個參數。這是一個常規模式,使得使用 D 語言成為一種樂趣,因此,它與你自然而然考慮代碼的感覺非常相似。結果就是函數式編程。
你可能會猜出這列印的是什麼:
//file: cool.d
import std.stdio : writeln;
import std.uni : asLowerCase, asCapitalized;
void main()
{
string mySentence = "D IS COOL";
writeln(mySentence.asLowerCase.asCapitalized);
}
確認一下:
$ dmd cool.d
$ ./cool
D is cool
結合其他 D 語言的功能,UFCS 使你能夠編寫可重用的代碼,並在不犧牲便利性的情況下自然地進行編寫。
是時候嘗試 D 語言了
就像我之前寫的那樣,D 語言是一種很棒的開發語言。從 D 語言的下載頁面可以很容易地進行安裝,因此請下載編譯器,查看示例,並親自體驗 D 語言。
via: https://opensource.com/article/20/7/d-programming
作者:Lawrence Aberba 選題:lujun9972 譯者:geekpi 校對:wxy
本文轉載來自 Linux 中國: https://github.com/Linux-CN/archive
對這篇文章感覺如何?
太棒了
0
不錯
0
愛死了
0
不太好
0
感覺很糟
0
More in:Linux中國
Let's Encrypt 正式發布,已經保護 380 萬個域名
由於 Let's Encrypt 讓安裝 X.509 TLS 證書變得非常簡單,所以這個數量增長迅猛。
關於Linux防火牆iptables的面試問答
Nishita Agarwal是Tecmint的用戶,她將分享關於她剛剛經歷的一家公司(印度的一家私人公司Pune)的面試經驗。在面試中她被問及許多不同的問題,但她是iptables方面的專家,因此她想分享這些關於iptables的問題和相應的答案給那些以後可能會進行相關面試的人。 所有的問題和相應的答案都基於Nishita Agarwal的記憶並經過了重寫。 嗨,朋友!我叫Nishita Agarwal。我已經取得了理學學士學位,我的專業集中在UNIX和它的變種(BSD,Linux)。它們一直深深的吸引著我。我在存儲方面有1年多的經驗。我正在尋求職業上的變化,並將供職於印度的P
Lets Encrypt 已被所有主流瀏覽器所信任
旨在讓每個網站都能使用 HTTPS 加密的非贏利組織 Lets Encrypt 已經得了 IdenTrust的交叉簽名,這意味著其證書現在已經可以被所有主流的瀏覽器所信任。從這個裡程碑事件開始,訪問者訪問使用了Lets Encrypt 證書的網站不再需要特別配置就可以得到 HTTPS 安全保護了。 Lets Encrypt 的兩個中級證書 ...
SSL/TLS 加密新紀元 – Lets Encrypt
根據 Let's Encrypt 官方博客消息,Let's Encrypt 服務將在下周(11 月 16 日)正式對外開放。 Let's Encrypt 項目是由互聯網安全研究小組(ISRG,Internet Security Research Group)主導並開發的一個新型數字證書認證機構(CA,Certificate ...

















