Dart:2.經過一個簡單程序來理解Dart基礎語法

一 . 一個簡單的 Dart 程序

// 這是程序執行的入口。
main() {
    var number = 42; // 定義並初始化一個變量。
    printNumber(number); // 調用一個方法。
}

// 定義個方法。
printNumber(num aNumber) {
      print('The number is $aNumber.'); // 在控制檯打印內容。
    num m = 10;    //數字類型變量申明
    print(m); // 在控制檯打印內容。
    int n = 10;    //整形類型變量申明
    print(n); // 在控制檯打印內容。
    bool isBool = true;    //布爾類型變量申明
    print(isBool); // 在控制檯打印內容。
    double l = 10.001;    //浮點型類型變量申明
    print(l); // 在控制檯打印內容。
    String lastName = 'bird';    //字符串類型變量申明,使用`'...'` (或者 `"..."`)表示字面量
    print(lastName); // 在控制檯打印內容。
    //var 一種不指定類型聲明變量的方式,建議使用以上強制類型來使用,這樣編譯器不須要去推導類型
    var k = 'animal';
    print(k); // 在控制檯打印內容。
    var o = 10;
    print(o); // 在控制檯打印內容。
}

輸出結果:javascript

The number is 42.
10
10
true
10.001
bird
animal
10

經過以上一個簡單的Dart小程序簡單分析一下html

1 . Dart程序執行入口

//Dart 程序執行的入口方法,每一個程序都 *須要* 一個這樣的方法
void main() {

}

2 . 註釋

//單行註釋
/*
多行
註釋
*/

3 . 基礎數據類型變量申明

num m = 10;    //數字類型變量申明
int n = 10;    //整形類型變量申明
bool isBool = true;    //布爾類型變量申明
double l = 10.001;    //浮點型類型變量申明
String lastName = 'bird';    //字符串類型變量申明,使用`'...'` (或者 `"..."`)表示字面量
//var 一種不指定類型聲明變量的方式,建議使用以上強制類型來使用,這樣編譯器不須要去推導類型
var k = 'animal';
var o = 10;

4 . 字面量

賦值語句後面的值即爲字面量,好比以上的十、true、bird等java

5 . 打印內容

print("要輸出的內容......")

6 . 字符串插值

在字符串字面量中引用變量或者表達式 ,經過$variableName 或者 ${expression}形式引用變量express

String dogName = "Sam";
print("my dog name is :$dogName");
print("my dog name is :${dogName}");

輸出結果:小程序

my dog name is :Sam
my dog name is :Sam

7 . Functions方法簡單介紹

Dart 是一個真正的面嚮對象語言,方法也是對象而且具備一種 類型 Function。 這意味着,方法能夠賦值給變量,也能夠當作其餘方法的參數。 也能夠把 Dart 類的實例當作方法來調用。api

A . 定義方法的示例

printNumber(num aNumber) {
    //省略內容
}

B . 只有一個表達式的方法

能夠選擇使用縮寫語法來定義:微信

bool isNoble(int atomicNumber) => _nobleGases[atomicNumber] != null;

=> *expr* 語法是 { return *expr*; } 形式的縮寫。=> 形式 有時候也稱之爲 胖箭頭 語法。async

二 . 變量

1 . 變量

經過以上簡單的Dart程序對變量已經有所瞭解,下面來對變量具體講講。ide

聲明變量並賦值的示例:工具

var name = 'Bob'

變量是一個引用。上面名字爲 name 的變量引用了 一個內容爲 「Bob」 的 String 對象

2 . 變量默認值

沒有初始化的變量自動獲取一個默認值爲 null。類型爲數字的 變量如何沒有初始化其值也是 null

num m;
print(m == null);        //true
int n;
print(n == null);        //true
bool isBool;
print(isBool == null);    //true
double l;
print(l == null);        //true
String lastName;
print(lastName == null);//true

3 . Dart經常使用數據類型

num        //數字類型
int        //整數類型
bool    //布爾類型
double    //浮點類型
String    //字符串類型

4 . 可選的類型

在聲明變量的時候,你能夠選擇加上具體類型:

String name = 'Bob';

添加類型能夠更加清晰的表達你的意圖。 IDE 編譯器等工具備可使用類型來更好的幫助你, 能夠提供代碼補全、提早發現 bug 等功能。 通常使用 var 而不是具體的類型來定義局部變量

5 . const 變量和 final 變量聲明

若是你之後不打算修改一個變量,使用 final 或者 const,二者的區別

相同點,都是修飾一個不可變動的變量

const lastName = 'postbird';
  final firstName = 'bird  ';
  lastName = '123';  // 報錯
  firstName = '123'; // 報錯

[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-DZ6cr6O5-1571992016901)(E:Baidu學習筆記dart2.Dart基礎介紹1.png)]

const 只能經過靜態數據賦值,不然會報錯 , 給 const變量賦值非 const 字面量,則報錯以下:

const lastName = 'postbird';
  final firstName = 'bird  ';
  final time = new DateTime.now();
  const time2 = new DateTime.now(); // 報錯

[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-DptjZEbh-1571992016905)(E:Baidu學習筆記dart2.Dart基礎介紹2.png)]

三 . 常見數據類型的操做

1 . String 字符串換行和字符串拼接

A . 換行 ''' '''

String content = '''
    multipart
    ...
    string
  ''';  
  print(content);

輸出結果

multipart
...
string

B . 字符串拼接

拼接除了使用加好,還能夠像 js 的模板字符串直接拼接,語法差很少,只不過不須要反引號,普通引號便可,${v},其中若是隻是變量名,能夠省略大括號 $v

String str1 = 'dart1';
  String str2 = 'darg2';
  int age = 21;
  print('$str1   $str2  ${age.toString()}');
  print('${str1}   ${str2}  ${age.toString()} ${age} ${age * age}');

輸出結果

dart1   darg2  21
dart1   darg2  21 21 441

2 . int 和 double 數字 整形和浮點型

int num1 = 123;
  double price = 123.452323232;
  print(price * num1);
  price = 12;
  print(price * num1);

輸出結果

15184.635757536
1476.0

3 . bool 類型和 if 判斷

if 判斷只能是 bool 類型的返回值,這點和 js 這衶弱類型語言徹底不一樣:

bool flag = true;
  if(flag) {
    print('--- true');
  }
  int num1 = 1;
  double num2 = 1.0;
  String num3 = '1';
  if(num1 == num2) {
    print('num1 == num2');
  } else {
    print('num1 != num2');
  }
  if(num1 == num3) {
    print('num1 == num3');
  } else {
    print('num1 != num3');
  }
  // int a = 1;
  // if(a) {  // 報錯
  //   print('true');
  // }

若是 if 使用了非 bool 類型判斷報錯以下

int a = 1;
   if(a) {  // 報錯
     print('true');
   }

輸出結果

[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-2bjEzoLy-1571992016907)(E:Baidu學習筆記dart2.Dart基礎介紹3.png)]

4 . 類型判斷

is 操做符可以判斷類型歸屬,好比 A is B,可以返回 bool 類型,判斷 A 是否屬於 B 類型。

var value = 123;
  if(value is String) {
    print('${value} is string');
  } else if (value is int) {
    print('${value} is int');
  } else if (value is double) {
    print('${value} is double');
  } else {
    print('${value} is other type');
  }

輸出結果

123 is int

5 . List(列表)

List 類型是使用很是多的類型,與 js 的 Array 相似,初始賦值能夠直接給一個列表,也能夠經過 new List() 指定空的列表.

默認列表子項支持的值類型是 dynamic,不限制具體類型,若是須要限制具體類型則須要使用泛型,好比 new List() 限制子項類型

List 做爲對象提供了一些的方法和屬性: API 文檔地址: https://api.dart.dev/dev/2.4....

經過 add() 可以添加一個子項, 經過 addAll() 可以追加另外一個 List

List l1 = [123, '123', 'postbird'];
print(l1);
List l2 = new List();
l2.add('abc');
l2.add(123);
l2.addAll(['iterable', '222', '333', 123]);
print(l2);
List l3 = new List<String>();
l3.add('abc');
// l3.add(123);
print(l3);
List l4 = new List<int>();
l4.add(123);
// l4.add(123.12);
print(l4);
List l5 = new List<int>();
l5.add(1);
l5.add(3);
l5.add(2);
l5.add(4);
l5.add(6);
l5.add(2);
print(l5);
l5.sort();
print(l5);

輸出結果

[123, 123, postbird]
[abc, 123, iterable, 222, 333, 123]
[abc]
[123]
[1, 3, 2, 4, 6, 2]
[1, 2, 2, 3, 4, 6]

6 . Map 類型

與 javascript 對象相似,在 oc 中稱爲字典。

能夠經過字面量指定,也能夠經過聲明一個 new Map() 的空 Map。

API 文檔地址:https://api.dart.dev/dev/2.4....

var person = {
    'name': 'ptbird',
    'age': 24,
    'work': ['it1', 'it2']
};
print(person);
print(person.toString());
print(person['name']);
print(person['age']);
print(person['work']);
Map person2 = new Map();
person2['name'] = 'name2';
person2['age'] = 24;
person2['work'] = ['it1', 'it2'];
print(person2);
print(person2['work']);

輸出結果

{name: ptbird, age: 24, work: [it1, it2]}
{name: ptbird, age: 24, work: [it1, it2]}
ptbird
24
[it1, it2]
{name: name2, age: 24, work: [it1, it2]}
[it1, it2]

四 . Dart關鍵字

abstract continue false new this
as default final null throw
assert deferred finally operator true
async do for part try
async dynamic get rethrow typedef
await else if return var
break enum implements set void
case export import static while
catch external in super with
class extends is switch yield
const factory library sync yield

五 . 參考資料:

http://dart.goodev.org/guides...

http://www.ptbird.cn/dart-var...
歡迎掃面下列二維碼關注「餘弦的自留地」公衆微信號
在這裏插入圖片描述萬物之中,但願至美

相關文章
相關標籤/搜索