2021超详细的Dart语言基础总结~你值得拥有~
文章目錄
- 前言:dart語言簡介
- 一、變量
- 1.1.類型推導
- 1.2.默認值
- 1.3.Final 和 const修飾符
- 二、內建類型
- 2.1.數據類型
- 2.2.集合的相關操作
- 三、函數
- 3.1.函數的定義
- 3.2.箭頭函數
- 3.3.可選函數
- 3.4.參數默認值
- 3.5.匿名函數
- 3.6.詞法作用域
- 3.7.詞法閉包
- 3.7.返回值問題
- 四、運算符
- 4.1.除法、整除、取模運算
- 4.2.條件運算符
- 4.3.級聯語法
- 五、循環語句
- 六、類和對象
- 6.1.類型的定義
- 6.2.不支持重載
- 6.3.抽象類
- 6.4.繼承
- 6.5.隱式接口
- 6.6.Mixin混入
- 七、泛型
- 7.1.List泛型
- 7.2.Map泛型
- 7.3.泛型方法
- 八、異步
- 九、元數據
前言:dart語言簡介
Dart是谷歌開發的計算機編程語言,后來被Ecma認定為標準 。它被用于web、服務器、移動應用 和物聯網等領域的開發。它是寬松開源許可證下的開源軟件。
Dart是面向對象的、類定義的、單繼承的語言。它的語法類似C語言,可以轉譯為JavaScript,支持接口、混入、抽象類、具體化泛型、可選類型和sound type system 。
一、變量
1.1.類型推導
創建一個變量并初始化
var name = ‘Bob’;
動態類型(會關閉類型檢查)
dynamic name = ’ Bob’;
void main() {dynamic name = 'Ronin';print(name.runtimeType);var name2 = 'Ronin';print(name2.runtimeType);name = 12;print(name.runtimeType); }1.2.默認值
var s; //默認為null
print(s);
1.3.Final 和 const修飾符
如果你從未打算改變一個變量,那么可以使用final和const修飾它
final name = 'zsh'; name = 'zms'; // 錯誤做法const age = 20; age = 19; // 錯誤做法final和const的區別?
const在賦值時, 賦值的內容必須是在編譯期間就確定下來的
final在賦值時, 可以動態獲取, 比如賦值一個函數
二、內建類型
2.1.數據類型
整數類型 int a = 1;
浮點類型 double = 1.23;
字符串類型 String s = ‘abc’;
布爾類型 bool flag = true;
List集合類型 List list = [‘a’,‘b’,‘c’,‘d’];
字典(Map)類型 Map<String,String> map2 = {‘name’:‘zsh’,‘age’:‘20’};
2.2.集合的相關操作
2.2.1、所以集合都支持length屬性
main() {//1.length屬性List<String> list = ['a','b','c','d'];Map<String,String> map = {'name':'zsh','age':'20'};print('${list.length}');print('${map.length}'); }2.2.2、添加,刪除,包含操作
main() {//1.length屬性List<String> list = ['a','b','c','d'];Map<String,String> map = {'name':'zsh','age':'20'};//listlist.add('e'); //添加print('$list');list.remove('a'); //刪除print('$list');bool s = list.contains('b'); //是否包含print('$s');/*** ------------------------------------------------*///mapMap<String,String> map2 = {'height':'10','weight':'20'};map.addAll(map2); //添加一個map集合print('$map');map.remove('name'); //刪除print('$map');print('${map.containsKey('age')}'); //包含 }三、函數
3.1.函數的定義
返回值 函數的名稱(參數列表) {
函數體
return 返回值
}
3.2.箭頭函數
void main() {List<String> list = ['a','b','c','d'];list.forEach((value)=> print('$value')); }3.3.可選函數
void copy(String name,{int age,int num }) {print('$name $age $num'); } main() {copy('zsh');copy('zsh',age:20);copy('zsh',age: 20,num: 10); }3.4.參數默認值
參數可以有默認值, 在不傳入的情況下, 使用默認值
只有可選參數才可以有默認值
3.5.匿名函數
(functio(){``` })()3.6.詞法作用域
dart中的詞法有自己明確的作用域范圍,它是根據代碼的結構({})來決定作用域范圍的
優先使用自己作用域中的變量,如果沒有找到,則一層層向外查找。
3.7.詞法閉包
閉包可以訪問其詞法范圍內的變量,即使函數在其他地方被使用,也可以正常的訪問。
main() {makeAdder(num addBy) {return (num i) {return i + addBy;};}var adder2 = makeAdder(2);print(adder2(10)); // 12print(adder2(6)); // 8var adder5 = makeAdder(5);print(adder5(10)); // 15print(adder5(6)); // 11 }3.7.返回值問題
所有函數都返回一個值。如果沒有指定返回值,則語句返回null;隱式附加到函數體。
main(List<String> args) {print(foo()); // null }foo() { }四、運算符
4.1.除法、整除、取模運算
var num = 7; print(num / 3); // 除法操作, 結果2.3333.. print(num ~/ 3); // 整除操作, 結果2; print(num % 3); // 取模操作, 結果1;4.2.條件運算符
Dart中包含一直比較特殊的條件運算符:expr1 ?? expr2
如果expr1是null,則返回expr2的結果;
如果expr1不是null,直接使用expr1的結果。
4.3.級聯語法
對一個對象進行連續的操作,這個時候可以使用級聯語法
class Shop{String name;void add() {print("${name} is add");}void update() {print("${name} is update");}}main(List<String> args) {final p1 = Shop();p1.name = 'zsh';p1.add();p1.update();final p2 = Shop()..name = "zsh"..add()..update() }五、循環語句
if 和 else
for循環
while和do-while循環
break和continue
switch和case
六、類和對象
6.1.類型的定義
class 類名 {
類型 成員名;
返回值類型 方法名(參數列表) {
方法體
}
}
6.2.不支持重載
Dart本身不支持函數的重載
class Csrf{String name;int age;Csrf(String name, int age) {this.name = name;this.age = age;} }6.3.抽象類
抽象方法,必須存在于抽象類中。
抽象類是使用abstract聲明的類。
6.4.繼承
Dart中的繼承使用extends關鍵字,子類中使用super來訪問父類。
父類中的所有成員變量和方法都會被繼承,,但是構造方法除外。
6.5.隱式接口
默認情況下,定義的每個類都相當于默認也聲明了一個接口,可以由其他的類來實現(因為Dart不支持多繼承)
abstract class Dog{method1(); }abstract class Cat{method2(); }class Person implements Dog, Cat{@overridemethod1() {}@overridemethod2() {} }6.6.Mixin混入
Mixin混入的方式實現多繼承
mixin Cat{method1() {} } mixin Dog{method2() {} } class Person implements Cat, Dog{ }七、泛型
7.1.List泛型
List list = [‘zsh’, ‘zms’, ‘user’];
var list = [‘zsh’, ‘zms’, ‘user’];
7.2.Map泛型
Map<String, String> map= {‘name’: ‘zsh’, ‘age’: ‘20’};
var map2 = <String, String>{‘name’: ‘zsh’, ‘age’: ‘20’};
7.3.泛型方法
T first(List ts) {
T tmp = ts[0];
return tmp;
}
八、異步
Dart是單線程模型
Dart是一個單線程語言.我們在處理耗時操作的時候使用stream或者future來實現
async和await關鍵字支持異步編程,允許您編寫類似于同步代碼的異步代碼。
九、元數據
使用元數據提供關于代碼的附加信息。元數據注釋以字符@開頭
class Todo {final String who;final String what;Todo(this.who, this.what); } import 'todo.dart';@Todo('seth', 'make this do something') void doSomething() {print('do something'); }總結
以上是生活随笔為你收集整理的2021超详细的Dart语言基础总结~你值得拥有~的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: springboot集成spring s
- 下一篇: DTO数据传输对象详解