成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專(zhuān)欄INFORMATION COLUMN

現(xiàn)代編程語(yǔ)言最有趣的 10 大特性

sanyang / 2409人閱讀

摘要:本文地址閱讀時(shí)間大概分鐘如今大多數(shù)現(xiàn)代語(yǔ)言都依然使用老舊的語(yǔ)法。我們看一下編程語(yǔ)言的年代等等。這些都是上個(gè)世紀(jì)的語(yǔ)言了。我覺(jué)得還有要給非常有用的特性,。之所以沒(méi)有提到,是因?yàn)榇蠖鄶?shù)語(yǔ)言都已經(jīng)有這個(gè)特性了吧,看來(lái)還是發(fā)展太慢啊。。。

dev-reading/fe 是一個(gè)閱讀、導(dǎo)讀、速讀的 repo,不要依賴于 dev-reading/fe 學(xué)習(xí)知識(shí)。本 repo 只是一個(gè)快速了解文章內(nèi)容的工具,并不提供全文解讀和翻譯。你可以通過(guò)本平臺(tái)快速了解文章里面的內(nèi)容,找到感興趣的文章,然后去閱讀全文。

本文地址:https://github.com/dev-readin...

閱讀時(shí)間大概 2 分鐘

如今大多數(shù)“現(xiàn)代”語(yǔ)言都依然使用老舊的 C-style 語(yǔ)法。

我們看一下編程語(yǔ)言的年代:Lisp (1958)、Smalltalk (1972)、Objective-C (1984)、Haskell (1990)、OCaml (1996)、等等。這些都是上個(gè)世紀(jì)的語(yǔ)言了。

本文作者選擇了幾個(gè)最新的語(yǔ)言:Reason、Swift、Kotlin、Dart 作為研究對(duì)象,總結(jié)了 10 個(gè)特性:

1 管道操作符 Pipeline operator

Reason 語(yǔ)法

let newScore = me.score
  |> double
  |> (it) => add(7, it)
  |> (it) => boundScore(0, 100, it);

對(duì)應(yīng)的 JavaScript 寫(xiě)法:

boundScore(0, 100, add(7, double(me.score)));

而 es 也已經(jīng)有了對(duì)應(yīng)的提案:tc39/proposal-pipeline-operator

2 模式匹配 Pattern matching

Kotlin 語(yǔ)法

when (x) {
    in 1..10 -> print("x is in the range")
    in validNumbers -> print("x is valid")
    !in 10..20 -> print("x is outside the range")
    else -> print("none of the above")
}
3 Reactive (Rx) programming build in the language

Dart 語(yǔ)法

input.onKeyDown                                              
  .where((e) => e.ctrlKey && e.code == "Enter")              
  .forEach((e) => dispatch(addTodoAction(e.target.value)));
4 lambda 函數(shù)的默認(rèn)參數(shù)

Kotlin 語(yǔ)法(使用 it 作為默認(rèn)參數(shù))

strings
  .filter{ it.length == 5 }
  .map{ it.toUpperCase() }

對(duì)比 JavaScript

strings
  .filter{ it => it.length === 5 }
  .map{ it => it.toUpperCase() }
5 解構(gòu) Destructuring

Reason 語(yǔ)法:

let someInts = (10, 20);
let (ten, twenty) = someInts;

type person = {name: string, age: int};
let somePerson = {name: "Guy", age: 30};
let {name, age} = somePerson;

Kotlin 語(yǔ)法

data class Person(val name: String, val age: Int)
val(name, age) = Person("Guy", 20)

es6 已經(jīng)有了數(shù)組解構(gòu),es8 增加了對(duì)象解構(gòu)

6 操作符級(jí)聯(lián) Cascade operator

Dart 語(yǔ)法

querySelector("#button") // Get an object.
  ..text = "Confirm" // Use its members.
  ..classes.add("important")
  ..onClick.listen((e) => dispatch(confirmedAction()));

對(duì)應(yīng)的 JavaScript 寫(xiě)法

var button = querySelector("#button");
button.text = "Confirm";
button.classed.add("important");
button.onClick.listen((e) => dispatch(confirmedAction()));

如果使用 jQuery 基本在寫(xiě)法上就和 dart 一致了,但是兩者有本質(zhì)的不同

7 if 表達(dá)式 If expressions

Kotlin 語(yǔ)法

val result = if (param == 1) {
    "one"
} else if (param == 2) {
    "two"
} else {
    "three"
}

對(duì)于 if 表達(dá)式有人喜歡,有人討厭,有人覺(jué)得無(wú)所謂;我是非常喜歡的,我之前在知乎有個(gè)回答:https://www.zhihu.com/questio...

8 Try expressions

Kotlin 語(yǔ)法

val result = try {
    count()
} catch (e: ArithmeticException) {
    throw IllegalStateException(e)
}
9 自動(dòng)科里化 Automatic currying

Reason 語(yǔ)法:

let add = (x, y) => x + y;   /* same as (x) => (y) => x + y; */
let five = add(2,3);         /* 5 */
let alsoFive = add(2)(3);    /* 5 */
let addFive = add(5);        /* y => 5 + y; */
let eleven = addFive(6);     /* 11 */
let twelve = addFive(7);     /* 12 */
10 方法擴(kuò)展 Method extensions

Swift 語(yǔ)法:

extension Int {
    func repetitions(task: () -> Void) {
        for _ in 0..

JavaScript 可以在原型上擴(kuò)展。

我覺(jué)得還有要給非常有用的特性,optional-chaining。之所以沒(méi)有提到,是因?yàn)榇蠖鄶?shù)語(yǔ)言都已經(jīng)有這個(gè)特性了吧,看來(lái) JavaScript 還是發(fā)展太慢啊。。。

繼續(xù)閱讀原文:https://medium.com/@kasperpeu...

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/89789.html

相關(guān)文章

  • 前端每周清單半年盤(pán)點(diǎn)之 JavaScript 篇

    摘要:前端每周清單專(zhuān)注前端領(lǐng)域內(nèi)容,以對(duì)外文資料的搜集為主,幫助開(kāi)發(fā)者了解一周前端熱點(diǎn)分為新聞熱點(diǎn)開(kāi)發(fā)教程工程實(shí)踐深度閱讀開(kāi)源項(xiàng)目巔峰人生等欄目。背后的故事本文是對(duì)于年之間世界發(fā)生的大事件的詳細(xì)介紹,闡述了從提出到角力到流產(chǎn)的前世今生。 前端每周清單專(zhuān)注前端領(lǐng)域內(nèi)容,以對(duì)外文資料的搜集為主,幫助開(kāi)發(fā)者了解一周前端熱點(diǎn);分為新聞熱點(diǎn)、開(kāi)發(fā)教程、工程實(shí)踐、深度閱讀、開(kāi)源項(xiàng)目、巔峰人生等欄目。歡迎...

    Vixb 評(píng)論0 收藏0
  • 前端學(xué)習(xí)資源

    摘要:掘金日?qǐng)?bào)第四期使用怎么能不知道這些插件合集掘金日?qǐng)?bào)主打分享優(yōu)質(zhì)深度技術(shù)內(nèi)容,技術(shù)內(nèi)容分前端后端產(chǎn)品設(shè)計(jì)工具資源和一些有趣的東西。目前已經(jīng)涵蓋了的相關(guān)資源鏈接,供大家參考與學(xué)習(xí)。 【掘金日?qǐng)?bào)】第四期 使用Sublime?怎么能不知道這些 Sublime 插件合集! 掘金日?qǐng)?bào)主打分享優(yōu)質(zhì)深度技術(shù)內(nèi)容,技術(shù)內(nèi)容分:前端、后端、Android、iOS、產(chǎn)品設(shè)計(jì)、工具資源和一些有趣的東西。 前端...

    xzavier 評(píng)論0 收藏0
  • 前端學(xué)習(xí)資源

    摘要:掘金日?qǐng)?bào)第四期使用怎么能不知道這些插件合集掘金日?qǐng)?bào)主打分享優(yōu)質(zhì)深度技術(shù)內(nèi)容,技術(shù)內(nèi)容分前端后端產(chǎn)品設(shè)計(jì)工具資源和一些有趣的東西。目前已經(jīng)涵蓋了的相關(guān)資源鏈接,供大家參考與學(xué)習(xí)。 【掘金日?qǐng)?bào)】第四期 使用Sublime?怎么能不知道這些 Sublime 插件合集! 掘金日?qǐng)?bào)主打分享優(yōu)質(zhì)深度技術(shù)內(nèi)容,技術(shù)內(nèi)容分:前端、后端、Android、iOS、產(chǎn)品設(shè)計(jì)、工具資源和一些有趣的東西。 前端...

    weij 評(píng)論0 收藏0
  • 看吧,這就是現(xiàn)代化 PHP 該有樣子

    摘要:這大概是我沒(méi)有及早使用,或多數(shù)開(kāi)發(fā)者流連現(xiàn)狀造成的。它就是,一個(gè)的框架。行為驅(qū)動(dòng)開(kāi)發(fā)是來(lái)自測(cè)試驅(qū)動(dòng)開(kāi)發(fā)的開(kāi)發(fā)過(guò)程。簡(jiǎn)單的說(shuō),它就是經(jīng)常可能一天幾次將小塊代碼整合進(jìn)基礎(chǔ)代碼當(dāng)中的行為。 showImg(https://segmentfault.com/img/remote/1460000013769815); 這是一篇社區(qū)協(xié)同翻譯的文章,已完成翻譯,更多信息請(qǐng)點(diǎn)擊?協(xié)同翻譯介紹?。 文章...

    Tangpj 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

閱讀需要支付1元查看
<