1. 程式人生 > >dart之旅(一)

dart之旅(一)

console sta 環境安裝 ria odi 等價 app func tar

前言

最近在看 dart 了,本著 “紙上得來終覺淺,絕知此事 markdown” 的原則,準備邊學邊寫,寫一個系列,這是第一篇。學習過程中主要是參考
A Tour of the Dart Language和A Tour of the Dart Libraries, 外加自己的一些理解。內容上側重於基礎以及比較 dart 和 js 的異同。

安裝 sdk

工欲善其事,必先利其器,我們先來安裝一下,dart 的 sdk,只有這樣,我們寫的 dart 代碼才能跑起來。安裝 sdk 可以參考搬磚老程的這篇博客,寫的可以說是很詳細了。

安裝完成之後,在命令行終端輸入 dart,如果輸出 dart 相關命令的解釋,那就表示我們的環境安裝成功。接下來我們先記住一個命令 dart xxx.dart

就可以執行 dart 文件了。以下面這段 dart 代碼為例:


// Define a function.
printInteger(int aNumber) {
  print(‘The number is $aNumber.‘); // Print to console.
}

// This is where the app starts executing.
main() {
  var number = 42; // Declare and initialize a variable.
  printInteger(number); // Call a function.
}

將上面的這段代碼保存為 main.dart,在終端輸入 dart main.dart

,我們就將第一個 dart 程序跑了起來。

變量

在 dart 中,可以使用 var, dynamic, const, final 來聲明變量 / 常量。為了找出它們之間的不同,首先來看一個關於 var 和 dynamic 差別的例子。


main(List<String> args) {
  // var
  var d = "111"; 
  // String d =‘111‘; 等價於顯式聲明 d 的類型並賦值
  // d = 2; // 不能再賦不同類型的值
  print(d);

  // dynamic
  dynamic c = ‘sss‘;
  c = 3; // 可以賦值不同類型的值
  print(c);
}

從上面的例子可以看出,dart 具有類型推斷機制,當使用 var 聲明一個變量時,這個變量自動被定義成所賦值的類型,之後重新賦值時,只能對這個變量賦 ** 同類型 ** 的值。
而 dynamic 在重新賦值的時候可以賦不同類型的值。

接下來再談談 finalconst,final 和 const 都只能被賦值一次,但是兩者還是有如下區別:

  • 1??const 可以作用在值上, 當 const 作用在值上時,值不可修改,如果對應的變量沒有用 const 或者 final 聲明,變量可以重新賦值
  • 2??使用 const 聲明的對象,之後不能再進行操作(unmodifiable), 而 final 聲明的是可以的。參考下面的代碼:

   final name = 5;
   final name1 = const 5;
   var name2 = const {};
   const ax = 6;
   
   const x = [];
   x.add(6); // Cannot add to an unmodifiable list
   
   final y = [];
   y.add(9); // ok
   
   const x1 = {}; 
   obj[‘x1‘] = 5; //Cannot set value in unmodifiable Map
   
   final y1 = {};
   obj[‘y1‘] = 5; //ok
   

新手開車,如有錯誤還請指出。未完待續

dart之旅(一)