首頁  >  文章  >  後端開發  >  10 大現代程式語言最有趣的特性

10 大現代程式語言最有趣的特性

小云云
小云云原創
2017-11-16 10:39:111496瀏覽

隨著資訊科技的快速發展,越來越多的程式語言不斷出現在我們生活裡,同時也為我們提供了更多的工作機會。我們來看看程式語言的年代:Lisp (1958)、Smalltalk (1972)、Objective-C (1984)、Haskell (1990)、OCaml (1996)、等等。這些都是上個世紀的語言了。

本文小編選擇了幾個最新的語言:Reason、Swift、Kotlin、Dart 作為研究對象,總結了10 個特性:

1 管道操作符Pipeline operator

Reason 語法

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 matching

Kotlin 語法

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 operator

Dart 語法

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 expressions

Kotlin 語法

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

對於if 表達式有人喜歡,有人討厭,有人覺得無所謂;我是很喜歡的,我之前在知乎有個回答:https://www.zhihu.com/questio...

8 Try expressions

Kotlin 語法

val result = try {
    count()
} catch (e: ArithmeticEx

ception) {    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..<self {
            task()
        }
    }
}3.repetitions({    print("Hello!")
})// Hello!// Hello!// Hello!

JavaScript 可以在原型上擴充。

我覺得還有要給非常有用的特性,optional-chaining。之所以沒有提到,是因為大多數語言都已經有這個特性了吧,看來 JavaScript 發展還是有點慢。

以上就是這10個現代程式語言最有趣的特性,希望大家對此有所了解。

相關推薦:

當今時代十大程式語言 你喜歡哪一個

2017年9月TIOBE程式語言排行榜

什麼是PHP?程式語言為什麼要選擇學習PHP?

以上是10 大現代程式語言最有趣的特性的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn