摘要:本文地址閱讀時間大概分鐘如今大多數現代語言都依然使用老舊的語法。我們看一下編程語言的年代等等。這些都是上個世紀的語言了。我覺得還有要給非常有用的特性,。之所以沒有提到,是因為大多數語言都已經有這個特性了吧,看來還是發展太慢啊。。。
dev-reading/fe 是一個閱讀、導讀、速讀的 repo,不要依賴于 dev-reading/fe 學習知識。本 repo 只是一個快速了解文章內容的工具,并不提供全文解讀和翻譯。你可以通過本平臺快速了解文章里面的內容,找到感興趣的文章,然后去閱讀全文。
本文地址:https://github.com/dev-readin...
閱讀時間大概 2 分鐘
如今大多數“現代”語言都依然使用老舊的 C-style 語法。
我們看一下編程語言的年代:Lisp (1958)、Smalltalk (1972)、Objective-C (1984)、Haskell (1990)、OCaml (1996)、等等。這些都是上個世紀的語言了。
本文作者選擇了幾個最新的語言:Reason、Swift、Kotlin、Dart 作為研究對象,總結了 10 個特性:
1 管道操作符 Pipeline operatorReason 語法
let newScore = me.score |> double |> (it) => add(7, it) |> (it) => boundScore(0, 100, it);
對應的 JavaScript 寫法:
boundScore(0, 100, add(7, double(me.score)));
而 es 也已經有了對應的提案:tc39/proposal-pipeline-operator
2 模式匹配 Pattern matchingKotlin 語法
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 語法
input.onKeyDown .where((e) => e.ctrlKey && e.code == "Enter") .forEach((e) => dispatch(addTodoAction(e.target.value)));4 lambda 函數的默認參數
Kotlin 語法(使用 it 作為默認參數)
strings .filter{ it.length == 5 } .map{ it.toUpperCase() }
對比 JavaScript
strings .filter{ it => it.length === 5 } .map{ it => it.toUpperCase() }5 解構 Destructuring
Reason 語法:
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 語法
data class Person(val name: String, val age: Int) val(name, age) = Person("Guy", 20)
es6 已經有了數組解構,es8 增加了對象解構
6 操作符級聯 Cascade operatorDart 語法
querySelector("#button") // Get an object. ..text = "Confirm" // Use its members. ..classes.add("important") ..onClick.listen((e) => dispatch(confirmedAction()));
對應的 JavaScript 寫法
var button = querySelector("#button"); button.text = "Confirm"; button.classed.add("important"); button.onClick.listen((e) => dispatch(confirmedAction()));
如果使用 jQuery 基本在寫法上就和 dart 一致了,但是兩者有本質的不同
7 if 表達式 If expressionsKotlin 語法
val result = if (param == 1) { "one" } else if (param == 2) { "two" } else { "three" }
對于 if 表達式有人喜歡,有人討厭,有人覺得無所謂;我是非常喜歡的,我之前在知乎有個回答:https://www.zhihu.com/questio...
8 Try expressionsKotlin 語法
val result = try { count() } catch (e: ArithmeticException) { throw IllegalStateException(e) }9 自動科里化 Automatic currying
Reason 語法:
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 方法擴展 Method extensions
Swift 語法:
extension Int { func repetitions(task: () -> Void) { for _ in 0..JavaScript 可以在原型上擴展。
我覺得還有要給非常有用的特性,optional-chaining。之所以沒有提到,是因為大多數語言都已經有這個特性了吧,看來 JavaScript 還是發展太慢啊。。。
繼續閱讀原文:https://medium.com/@kasperpeu...
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/89789.html
摘要:前端每周清單專注前端領域內容,以對外文資料的搜集為主,幫助開發者了解一周前端熱點分為新聞熱點開發教程工程實踐深度閱讀開源項目巔峰人生等欄目。背后的故事本文是對于年之間世界發生的大事件的詳細介紹,闡述了從提出到角力到流產的前世今生。 前端每周清單專注前端領域內容,以對外文資料的搜集為主,幫助開發者了解一周前端熱點;分為新聞熱點、開發教程、工程實踐、深度閱讀、開源項目、巔峰人生等欄目。歡迎...
摘要:這大概是我沒有及早使用,或多數開發者流連現狀造成的。它就是,一個的框架。行為驅動開發是來自測試驅動開發的開發過程。簡單的說,它就是經常可能一天幾次將小塊代碼整合進基礎代碼當中的行為。 showImg(https://segmentfault.com/img/remote/1460000013769815); 這是一篇社區協同翻譯的文章,已完成翻譯,更多信息請點擊?協同翻譯介紹?。 文章...
閱讀 3616·2021-11-24 10:22
閱讀 3686·2021-11-22 09:34
閱讀 2480·2021-11-15 11:39
閱讀 1528·2021-10-14 09:42
閱讀 3662·2021-10-08 10:04
閱讀 1553·2019-08-30 15:52
閱讀 847·2019-08-30 13:49
閱讀 3015·2019-08-30 11:21