DART(計算機程式語言)

DART(計算機程式語言)

本詞條是多義詞,共2個義項
更多義項 ▼ 收起列表 ▲

Dart是谷歌開發的計算機程式語言,後來被Ecma (ECMA-408)認定為標準。它被用於web、伺服器、移動套用和物聯網等領域的開發。它是寬鬆開源許可證(修改的BSD證書)下的開源軟體。

Dart是面向對象的、類定義的、單繼承的語言。它的語法類似C語言,可以轉譯為JavaScript,支持接口(interfaces)、混入(mixins)、抽象類(abstract classes)、具體化泛型(reified generics)、可選類型(optional typing)和sound type system。

基本介紹

  • 外文名:Dart
  • 推出時間:2011年10月10日 
  • 項目創建者:Lars Bak,Kasper Lund
歷史,發布,標準化,Flutter,新版本,例子,

歷史

發布

Dart亮相於2011年10月10至12日在丹麥奧爾胡斯舉行的GOTO大會上。該項目由Lars bak和kasper lund創建。

標準化

Ecma國際組織組建了技術委員會TC52來開展Dart的標準化工作,並且在Dart可以編譯為標準JavaScript的情況下,它可以在任何現代瀏覽器中有效地工作。Ecma國際組織於2014年7月第107屆大會批准了Dart語言規範第一版,並於2014年12月批准了第二版。

Flutter

2015年5月Dart開發者峰會上,亮相了基於Dart語言的移動應用程式開發框架Sky,後更名為Flutter。

新版本

2018年2月,Dart2成為強類型語言。

例子

hello world例子
在終端列印字元串‘Hello World!’
main() {      print('Hello World!');}
計算斐波那契數列
int fib(int n) => (n > 2) ? (fib(n - 1) + fib(n - 2))  : 1;void main() {  print('fib(20) = ${fib(20)}');}
一個簡單的類
計算兩點距離
// 引入math庫以訪問sqrt函式import 'dart:math' as math;// 創建類Point.class Point {  // Final變數一經定義不可改變  // 創建分別代表x、y軸的距離變數  final num x, y;  // 在構造方法中以語法糖快捷地設定實例變數  Point(this.x, this.y);  // 一個帶有初始化列表的命名構造方法  Point.origin()    : x = 0,      y = 0;  // 計算兩點距離的方法  num distanceTo(Point other) {    var dx = x - other.x;    var dy = y - other.y;    return math.sqrt(dx * dx + dy * dy);  }  // 重載運算符  Point operator +(Point other) => new Point(x + other.x, y + other.y);}// 所有的Dart程式都以main()函式作為入口void main() {  // 實例化兩個點  var p1 = new Point(10, 10);  var p2 = new Point.origin();  // 計算兩點距離  var distance = p1.distanceTo(p2);  print(distance);}
異步並發示例
使用了Isolate
import 'dart:async';import 'dart:isolate';main() async {  var receivePort = new ReceivePort();  await Isolate.spawn(echo, receivePort.sendPort);  // 'echo'傳送的第一個message,是它的SendPort  var sendPort = await receivePort.first;  var msg = await sendReceive(sendPort, "foo");  print('received $msg');  msg = await sendReceive(sendPort, "bar");  print('received $msg');}/// 新isolate的入口函式echo(SendPort sendPort) async {  // 實例化一個ReceivePort 以接收訊息  var port = new ReceivePort();  // 把它的sendPort傳送給宿主isolate,以便宿主可以給它傳送訊息  sendPort.send(port.sendPort);  // 監聽訊息      await for (var msg in port) {    var data = msg[0];    SendPort replyTo = msg[1];    replyTo.send(data);    if (data == "bar") port.close();  }}/// 對某個port傳送訊息,並接收結果Future sendReceive(SendPort port, msg) {  ReceivePort response = new ReceivePort();  port.send([msg, response.sendPort]);  return response.first;}

相關詞條

熱門詞條

聯絡我們