日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

2021超详细的Dart语言基础总结~你值得拥有~

發布時間:2024/10/5 编程问答 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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在賦值時, 可以動態獲取, 比如賦值一個函數

String getName() {return "zsh";}main() {final name1 = getName(); //正確const name2 = getName(); //錯誤->需要執行函數才能取到值}

二、內建類型

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’};

main() {int a = 1; //整數類型print(a);double b = 1.23; //浮點類型print(b);String s = 'abc'; //字符串類型print('$s');bool flag = true; //布爾類型print(flag);var str1 = ['a','b','c','d']; //List集合類型,使用類型推導定義print('$str1 ${str1.runtimeType}');List<String> list = ['a','b','c','d']; //List定義print('$list ${list.runtimeType}');var map1 = {'name':'zsh','age':'20'}; //字典類型,使用類型推導定義print('$map1 ${map1.runtimeType}');Map<String,String> map2 = {'name':'zsh','age':'20'};print('$map2 ${map2.runtimeType}'); }

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 返回值
}

String getString() {return "zsh"; } void main() {String s = getString();print('$s'); }

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.參數默認值

參數可以有默認值, 在不傳入的情況下, 使用默認值
只有可選參數才可以有默認值

copy(String name, {int age = 20, double height=1.3}) {print('name=$name age=$age height=$height'); }

3.5.匿名函數

(functio(){``` })()

3.6.詞法作用域

dart中的詞法有自己明確的作用域范圍,它是根據代碼的結構({})來決定作用域范圍的
優先使用自己作用域中的變量,如果沒有找到,則一層層向外查找。

var s = 'zsh'; main() {font() {print('$s');}font(); }

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的結果。

var str = 'zsh'; var str= null; var str= str ?? 'kobe'; print(str);

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 類名 {
類型 成員名;
返回值類型 方法名(參數列表) {
方法體
}
}

class Csrf{String name;test() {print('${name}');} }

6.2.不支持重載

Dart本身不支持函數的重載

class Csrf{String name;int age;Csrf(String name, int age) {this.name = name;this.age = age;} }

6.3.抽象類

抽象方法,必須存在于抽象類中。
抽象類是使用abstract聲明的類。

abstract class AbstractContainer {void updateChildren();

6.4.繼承

Dart中的繼承使用extends關鍵字,子類中使用super來訪問父類。
父類中的所有成員變量和方法都會被繼承,,但是構造方法除外。

class Animal {String name; } class Cat extends Animal {}

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;
}

main() {var names = ['zsh', 'ss'];var first = getFirst(names);print('$first ${first.runtimeType}');//zsh String }T getFirst<T>(List<T> ts) {return ts[0]; }

八、異步

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语言基础总结~你值得拥有~的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。