最近學習了一些現(xiàn)代編程語言,比如Reason,Swift,Kotlin和Dart。這些編程語言提供了許多新功能,本文主要分享了我認為最有趣的十大功能,這也可以作為劃分現(xiàn)代編程語言的參考。
未來幾年,我希望這些功能將會被更廣泛地采用。對于一些較老的編程語言,比如Javascript、PHP、Java和Python。由于許多程序員必須每天在工作中使用這些編程語言,如果這些語言可以不斷向前發(fā)展,應該是最值得高興的一件事情。
#1 Pipeline operator
雖然找不到任何官方文檔,但它看起來像ECMAScript一樣。
#2 模式匹配
這項功能主要來自于Kotlin,熟悉Kotlin或具備Java編程基礎的程序員可以嘗試一下。(示例參考地址:https://kotlinlang.org/docs/reference/basic-syntax.html#using-when-expression)
#3 Reactive(Rx)編程構建
這項功能來自于Dart編程語言,Dart異步編程的特點是Future和Stream類。
Future表示一個不能立即完成的計算。在普通函數(shù)返回結果的地方,一個異步函數(shù)返回一個Future,它將包含最終結果。
Stream是一系列異步事件,就像一個異步可迭代的地方。(代碼參考:https://www.dartlang.org/tutorials/language/streams)
#4 lambda函數(shù)的單個參數(shù)隱式名稱(使用“it”)
這項功能同樣來自于Kotlin(代碼參考:https://kotlinlang.org/docs/reference/lambdas.html#it-implicit-name-of-a-single-parameter),這將涉及高階函數(shù)和Lamdba兩部分介紹,高階函數(shù)以函數(shù)作為參數(shù)或返回函數(shù)。一個很好的例子是lock(),它接受一個鎖對象和函數(shù),程序員可通過運行函數(shù)并釋放鎖。
#5 重構
“重構”是一種從數(shù)據(jù)結構中提取字段的直觀方式,可以在任何使用變量的地方使用。(代碼參考:https://reasonml.github.io/guide/language/destructuring/)
#6 級聯(lián)運算符
本功能主要來自Dart編程語言,(代碼參考:https://www.dartlang.org/guides/language/language-tour#cascade-notation-)主要展示了如何使用每個主要的Dart特性,從變量和運算符到類和庫以及如何使用該編程語言進行編程。
#7 if表達式
在Kotlin中,if是一個表達式,即它返回一個值。因此沒有三元運算符(condition?then:else),因為普通的if就可以工作得很好。
#8 Try表達式
本功能來自于Kotlin(代碼參考:https://kotlinlang.org/docs/reference/idioms.html#trycatch-expression),Kotlin中隨機使用的idiom集合。如果你有一個最喜歡的idiom,可以通過發(fā)送pull請求來提供。
#9 自動currying
(代碼參考:https://reasonml.github.io/guide/language/function/#currying)
#10 方法擴展
本功能來自于Swift,可擴展為現(xiàn)有的類,結構,枚舉或協(xié)議類型添加新的功能。這包括擴展無法訪問原始源代碼的類型(稱為追溯建模)。擴展與Objective-C中的類別相似(相似但并不等于Objective-C中的類別,Swift擴展沒有名稱)。(代碼參考:https://developer.apple.com/library/content/documentation/Swift/Conceptual/Swift_Programming_Language/Extensions.html#//apple_ref/doc/uid/TP40014097-CH24-ID151)