一 . 一個簡單的 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); // 在控制臺列印內容,
}
輸出結果:
The number is 42.
10
10
true
10.001
bird
animal
10
通過以上一個簡單的Dart小程式簡單分析一下
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 . 字面量
賦值陳述句后面的值即為字面量,比如以上的10、true、bird等
5 . 列印內容
print("要輸出的內容......")
6 . 字串插值
在字串字面量中參考變數或者運算式 ,通過$variableName 或者 ${expression}形式參考變數
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 類的實體當做方法來呼叫,
A . 定義方法的示例
printNumber(num aNumber) {
//省略內容
}
B . 只有一個運算式的方法
可以選擇使用縮寫語法來定義:
bool isNoble(int atomicNumber) => _nobleGases[atomicNumber] != null;
=> *expr* 語法是 { return *expr*; } 形式的縮寫,=> 形式 有時候也稱之為 胖箭頭 語法,
二 . 變數
1 . 變數
通過以上簡單的Dart程式對變數已經有所了解,下面來對變數具體講講,
宣告變數并賦值的示例:
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\學習筆記\dart\2.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\學習筆記\dart\2.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\學習筆記\dart\2.Dart基礎介紹\3.png)]
4 . 型別判斷
is 運算子能夠判斷型別歸屬,比如 A is B,能夠回傳 bool 型別,判斷 A 是否屬于 B 型別,
var value = https://www.cnblogs.com/cosecholand/p/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.0-dev.0.0/dart-core/List-class.html
通過 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.0-dev.0.0/dart-core/Map-class.html
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/language/language-tour
http://www.ptbird.cn/dart-variable-operation.html#menu_index_3
歡迎掃面下列二維碼關注“余弦的自留地”公眾微信號

萬物之中,希望至美
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/1879.html
標籤:Dart
