亚洲视频二区_亚洲欧洲日本天天堂在线观看_日韩一区二区在线观看_中文字幕不卡一区

公告:魔扣目錄網(wǎng)為廣大站長提供免費(fèi)收錄網(wǎng)站服務(wù),提交前請(qǐng)做好本站友鏈:【 網(wǎng)站目錄:http://www.430618.com 】, 免友鏈快審服務(wù)(50元/站),

點(diǎn)擊這里在線咨詢客服
新站提交
  • 網(wǎng)站:51998
  • 待審:31
  • 小程序:12
  • 文章:1030137
  • 會(huì)員:747

什么是Dart語言

Dart語言是谷歌公司在2011年推出的新的計(jì)算機(jī)語言。Dart可以應(yīng)用于web、服務(wù)器、移動(dòng)應(yīng)用和物聯(lián)網(wǎng)等領(lǐng)域的開發(fā)。Dart的終極目標(biāo)是取代JAVAScript。Dart設(shè)計(jì)完全脫離JavaScript,因此它沒有向后兼容JavaScript。Dart語言的發(fā)展始終一直都是不溫不火。

為什么要用Dart

Flutter是谷歌的移動(dòng)UI框架,可以快速在IOS和Android上構(gòu)建高質(zhì)量的原生用戶界面。 Flutter可以與現(xiàn)有的代碼一起工作。在全世界,F(xiàn)lutter正在被越來越多的開發(fā)者和組織使用,并且Flutter是完全免費(fèi)、開源的。Flutter選擇了Dart作為開發(fā)語言,因此想學(xué)習(xí)Flutter就必須先學(xué)習(xí)好Dart。

環(huán)境搭建

下載和安裝Dart

可以從下載到最新版本的Dart。

Dart語言快速入?

 

雙擊下載到的exe文件,依照向?qū)е甘就瓿蒁art的安裝。

安裝驗(yàn)證

1. window鍵+r打開運(yùn)行窗口

1. 在運(yùn)行窗口的打開輸入框輸入cmd,然后點(diǎn)擊確定

Dart語言快速入?

 

1. 在命令行界面輸入命令并按回車

dart --version
Dart語言快速入?

 

安裝Visual Studio Code

很多常見的IDE都有Dart的插件可以使用,這里推薦使用加插件進(jìn)行Dart開發(fā)。可以在下載到Visual Studio Code,安裝完成后可以開始添加插件。

安裝Dart插件

Dart語言快速入?

 

安裝Code Runner插件

Dart語言快速入?

 

helloworld

1. 在VSC新建文件

1. 輸入以下代碼

void main(){ print('hello world');}

1. 在文件上按鼠標(biāo)右鍵,選擇點(diǎn)擊Run Code運(yùn)行

Dart語言快速入?

 

1. 運(yùn)行結(jié)果

Dart語言快速入?

 

變量聲明

var

使用方式與JavaScript的var一致,可以接收任意類型的值。不同的地方是,Dart是強(qiáng)類型語言,賦值以后類型就確定下來,不能再更改為其它類型。

var name;name = 'zhangsan';// 下面的代碼在dart中會(huì)報(bào)錯(cuò),原因是變量name類型已經(jīng)確定為String// 類型一旦確定就不能再更改.name = 100;

final和const

final和const類似都可以定義一個(gè)常量。它們的區(qū)別是const在聲明必須賦值,而final可以先預(yù)聲明需要使用時(shí)再賦值。

// const和final在聲明字面量時(shí)作用是一致的
const PI = 3.14159;
final PI2 = 3.14159;// 以下代碼會(huì)報(bào)錯(cuò),原因是常量賦值后就不能再做修改
// PI = 3.1415926535;final now = new DateTime().now();
// 以下代碼在dart中會(huì)報(bào)錯(cuò),const在編譯時(shí)就必要賦值,而new DateTime().now()
// 在運(yùn)行才能產(chǎn)生具體的
// const now2 = new DateTime().now();

數(shù)據(jù)類型

Dart內(nèi)置節(jié)以下幾種數(shù)據(jù)類型

· String

· Number

· Boolean

· List(Dart沒有數(shù)組,類似于數(shù)組的作用)

· Map

· Runes(UTF-32字符集的字符)

· Symbols

通過一段代碼來演示以上的數(shù)據(jù)類型

void main(){ 
// Number
 int a = 1; 
double b = 0.1; 
// String
 var s1 = 'this is a string'; 
String s2 = "this is another string"; 
// boolean
 var flag = true; 
bool flag2 = false; 
// List 
List list = [1, 2, 3, 4, 5];
 List<String> list2 = ['zhang', 'san', "123", "456"];
 List<dynamic> list3 = [1, true, 'haha', 1.0]; 
// Map
 Map person = new Map(); 
map['name'] = 'zhangsan'; 
map['age'] = 22; 
// Dart使用runes來獲取UTF-32字符集的字符。String的codeUnitAt and codeUnit屬性可以獲取UTF-16字符集的字符
 var clApping = '\u{1f44f}'; print(clapping); 
// 打印的是拍手emoji的表情 
// symbols print(#s == new Symbol("s")); // true}

函數(shù)

函數(shù)的返回值

Dart是面向?qū)ο蟮木幊陶Z言,所以函數(shù)也是一個(gè)對(duì)象,還有一種類型Function,也就是說函數(shù)可以賦值給某個(gè)變量或者作為參數(shù)傳給另外的函數(shù)。Dart建議給函數(shù)添加上返回類型,但是不加返回類型的函數(shù)同樣可以正常工作,另外還可以用lamda表達(dá)式,比如下面的代碼:

// 聲明返回類型
int add(int a, int b) { return a + b;
}
// 不聲明返回類型add2(int a, int b) { return a + b;}
// =>是return語句的簡寫add3(a, b) => a + b;main() {
print(add(1, 2));//3 
print(add2(2, 3)); // 5 
print(add3(1, 2)); // 3}

命名參數(shù)、位置參數(shù)、參數(shù)默認(rèn)值

命名參數(shù)

使用花括號(hào)將函數(shù)的參數(shù)括起來就是定義了命名參數(shù),如下面的代碼所示:

```dart sayHi({String name}) { print("hello, my name is $name");}

sayHi2({name: String}) { print("hello, my name is $name");}

main() { // 打印 hello, my name is zhangsan sayHi(name: 'zhangsan');

// 打印 hello, my name is wangwu 
sayHi2(name: 'wangwu');
}```

從上面代碼可以看到,命名參數(shù)時(shí)可以使用{type paramName}或者{paramName: type}兩種方式聲明參數(shù),而調(diào)用命名參數(shù)時(shí),需要以funcName(paramName: paramValue)的形式調(diào)用。

命名參數(shù)的參數(shù)并不是必須的,所以上面的代碼中,如果調(diào)用sayHi()不帶任何參數(shù),也是可以的,只不過最后打印出來的結(jié)果是:hello, my name is null。

位置參數(shù)

使用中括號(hào)[]括起來的參數(shù)是函數(shù)的位置參數(shù),代表該參數(shù)可傳可不傳,位置參數(shù)只能放在函數(shù)的參數(shù)列表的最后面,如下代碼所示:

```dart sayHello(String name, int age, [String hobby]) { // 位置參數(shù)可以有多個(gè),比如[String a, int b] var msg = "hello, this is $name and I am $age years old"; if (hobby != null) { msg = "$msg, my hobby is $hobby"); } print(msg);}
main() { // hello, this is zhangsan and I am 20 years old sayHello("zhangsan", 20); // hello, this is zhangsan and I am 20 years old, my hobby is play tv game sayHello("zhangsan", 20, "play tv game");}```

參數(shù)默認(rèn)值

可以為命名參數(shù)或者位置參數(shù)設(shè)置默認(rèn)值,如下代碼所示:

```// 命名參數(shù)的默認(rèn)值int add({int a, int b = 3}) { return a + b;}// 位置參數(shù)的默認(rèn)值int sum(int a, int b, [int c = 3]) { return a + b + c;}```

main()函數(shù)

不論在Dart還是Flutter中,必須都需要一個(gè)頂層的main()函數(shù),它是整個(gè)應(yīng)用的入口函數(shù),main()函數(shù)的返回值是void,還有一個(gè)可選的參數(shù),參數(shù)類型是List。

匿名函數(shù)

大多數(shù)函數(shù)都是有名稱的,比如main() hello()等,但是也可以寫匿名函數(shù),如果對(duì)JavaScript比較熟悉,看到下面的肯定也不會(huì)陌生:

test(Function callback) {
 callback("hello");}
main() { test((param) {
 // 打印hello print(param);
 });}

匿名函數(shù)類似于Java中的接口,往往在某個(gè)函數(shù)的參數(shù)為函數(shù)時(shí)使用到。

函數(shù)返回值

所有的函數(shù)都有返回值,如果沒有指定return語句,那么該函數(shù)的返回值為null。

運(yùn)算符

Dart中的運(yùn)算符與JavaScript中的類似,比如++a、a == b、b ? a : b,但是也有一些與JavaScript不太一樣的運(yùn)算符,下面用代碼說明:

main() { 
// 與JavaScript相同的運(yùn)算符操作 
int a = 1; 
++a; 
a++; 
var b = 1; 
print(a == b); // false 
print(a * b); // 3
 bool real = false; 
real ? print('real') : print('not real'); // not real
 print(real && a == b); // false 
print(real || a == 3); // true 
print(a != 2); // true 
print(a <= b); // false 
var c = 9; c += 10; print("c = $c"); // c = 19 
print(1<<2); // 4 
// 與JavaScript不一樣的運(yùn)算符操作
 // is運(yùn)算符用于判斷一個(gè)變量是不是某個(gè)類型的數(shù)據(jù) 
// is!則是判斷變量不是某個(gè)類型的數(shù)據(jù)
 var s = "hello"; 
print(s is String); // true
 var num = 6; print(num is! String); // true
 // ~/才是取整運(yùn)算符,如果使用/則是除法運(yùn)算,不取整
 int k = 1; 
int j = 2; 
print(k / j); // 0.5 
print(k ~/ j); // 0 
// ??=運(yùn)算符 如果 ??= 運(yùn)算符前面的變量為null,則賦值,否則不賦值 
var param1 = "hello", param2 = null; 
param1 ??= "world"; 
param2 ??= "world"; 
print("param1 = $param1"); // param1 = hello
 print("param2 = $param2"); // param2 = world 
// ?.運(yùn)算符 
var str1 = "hello world";
 var str2 = null; 
print(str1?.length); // 11 
print(str2?.length); // null
 print(str2.length); // 報(bào)錯(cuò)}

控制流程

if...else, switch, for, while, try...catch語句跟JavaScript中都類似,try...catch語句可能稍有不同,下面用一段代碼說明:

main() { 
// if...else語句 
int score = 80; 
if (score < 60) { print("so bad!");
 } else if (score >= 60 && score < 80) {
 print("just pass!"); } 
else if (score >= 80) { print("well done!");
 } 
// switch語句
 String a = "hello"; 
// case語句中的數(shù)據(jù)類型必須是跟switch中的類型一致
 switch (a) {
 case "hello":
 print("good weather"); 
break; 
case "world":
 print("good morning"); 
break; 
default: 
print("good bye"); } 
// for語句
 List<String> list = ["a", "b", "c"]; 
for (int i = 0; i < list.length; i++) { 
print(list[i]); }
 for (var i in list) { print(i); } 
// 箭頭函數(shù)參數(shù)必須要用圓括號(hào)擴(kuò)起來 list.forEach((item) => print(item)); 
// while語句 
int start = 1; 
int sum = 0; 
while (start <= 100) { 
sum += start;
 start++; } 
print(sum); 
// try...catch語句
 try { print(1 ~/ 0); 
} catch (e) { 
// IntegerDivisionByZeroException
 print(e); 
} 
try {
 1 ~/ 0; 
} on IntegerDivisionByZeroException { // 捕獲指定類型的異常
 print("error"); // 打印出error
 } finally { 
print("finally"); // 打印出finally
 }
}

總結(jié)

在這里我們學(xué)習(xí)了怎樣配置Dart的開發(fā)環(huán)境,對(duì)變量聲明、數(shù)據(jù)類型、函數(shù)、運(yùn)算符、控制流程語法進(jìn)行說明,為更深入學(xué)習(xí)Dart或者Flutter打下基礎(chǔ)。

分享到:
標(biāo)簽:語言 Dart
用戶無頭像

網(wǎng)友整理

注冊(cè)時(shí)間:

網(wǎng)站:5 個(gè)   小程序:0 個(gè)  文章:12 篇

  • 51998

    網(wǎng)站

  • 12

    小程序

  • 1030137

    文章

  • 747

    會(huì)員

趕快注冊(cè)賬號(hào),推廣您的網(wǎng)站吧!
最新入駐小程序

數(shù)獨(dú)大挑戰(zhàn)2018-06-03

數(shù)獨(dú)一種數(shù)學(xué)游戲,玩家需要根據(jù)9

答題星2018-06-03

您可以通過答題星輕松地創(chuàng)建試卷

全階人生考試2018-06-03

各種考試題,題庫,初中,高中,大學(xué)四六

運(yùn)動(dòng)步數(shù)有氧達(dá)人2018-06-03

記錄運(yùn)動(dòng)步數(shù),積累氧氣值。還可偷

每日養(yǎng)生app2018-06-03

每日養(yǎng)生,天天健康

體育訓(xùn)練成績?cè)u(píng)定2018-06-03

通用課目體育訓(xùn)練成績?cè)u(píng)定