Dart編程語言入門

Dart基礎入門語法介紹,詳細說明可以查看相關視頻《Dart編程語言入門》。

變量與常量

變量

1.使用?var?聲明變量,默認值為?null

var a;//null
a = 10;

2.顯示類型聲明

int a;//null
a = 10;

3.使用?var?聲明,可賦予不同類型的值

var a; //null
a = 10; //int
a = "Dart"; //string

4.使用?final?聲明只能賦值一次的變量

final a = 30;
a = 10; //Error

常量

使用?const?聲明編譯期常量

const a = 10;

數據類型

數值型

Dart中使用?num?表示數值型,子類只有兩種:int?和?double,分別表示整型和浮點型。
1.使用?num?聲明的類型既可以接收整型,也可以接收浮點型;

num a = 10; //int
a = 12.5; //double

2.使用?int?聲明整型;

int a = 10;

3.使用?double?聲明浮點型

double a = 10.5;

4.常用屬性和方法(更多可查看相關api)

int a = 30;
a.isEven;//是否偶數
a.isOdd; //是否奇數
a.abs();// 絕對值
a.toDouble();//轉換為浮點型
...int b = 10.5;
b.toInt();//轉換為整型
b.round(); //四舍五入,11
b.floor(); //不大于b的最大整數,10
b.ceil(); //不小于b的最小整數,11
...

字符串

Dart中使用?String?表示字符串。
1.使用?單引號?或?雙引號?創建字符串;

String str = "Dart";String str = 'Dart';

2.使用?三個單引號?或?三個雙引號?創建多行字符串;

String str = '''HelloDart''';String str = """HelloDart""";

3.使用?r?創建原始字符串

String str = r'Hello \n Dart'; // "\n"不會被轉義

4.插值表達式
使用?${ }?表示插件表達式,單個變量可省略?{ }。

int a = 1;
int b = 2;
print("a + b = ${a + b}");

5.常用屬性和方法(更多可查看相關api)

str.length;//字符串長度
str.isEmpty;//是否為空
...str.contains('xxx');//是否包含xxx
str.substring(0,3);//截取前三個字符
str.startsWith('xxx‘);//是否以xxx開頭
str.split(",");//以,分隔字符串,返回數組
...

布爾型

Dart中使用?bool?表示布爾型。布爾型的值只有?true?和?false。

bool isTrue = true;
bool isFalse = false;

List body ol,body ul{margin:0;padding:0;}body .list-paddingleft-1{padding-left:0} body .list-paddingleft-2{padding-left:20px} body .list-paddingleft-3{padding-left:40px}

Dart中使用?List?表示列表,它和數組是同一概念。

1.創建List,使用?const?創建不可變的List

var list = [1, 2, 3];//創建不可變的List
var list = const[1, 2, 3];//使用類創建
var list = new List();

2.常用屬性和方法(更多可查看相關api)

  • 獲取元素個數
list.length;
  • 判斷是否為空
list.isEmpty;list.isNotEmpty;
  • 添加元素
list.add('xxx');list.insert(index,'xxx'); //在下標位置添加元素
  • 刪除元素
list.remove('xxx');list.clear(); //清空list
  • 修改元素
list[0] = 'xxx'; //修改下標為0的元素值為xxx
  • 查詢元素
list[0];//獲取第一個元素,下標從0開始
  • 其它
list.indexOf('xxx');//查詢元素xxx,返回下標,不存在返回-1list.sort(); //排序list.subList(start,end);//獲取從子列表list.forEach(); //遍歷list
...

Map

Dart中使用?Map?表示key-value鍵值對。

1.創建Map,使用?const?創建不可變的Map

var map = {'first':'Java','second':'Dart'};//創建不可變的Map
var map = {'first':'Java','second':'Dart'};//使用類創建
var map = new Map();

2.常用屬性和方法(更多可查看相關api)

  • 獲取元素個數
map.length;
  • 判斷是否為空
map.isEmpty;map.isNotEmpty;
  • 添加元素
map['third'] = 'JavaScript'; //添加key為thrid,value為JavaScript的元素
  • 刪除元素
map.remove('third'); //刪除key為third的元素map.clear(); //清空map
  • 修改元素
map['first'] = 'C++'; //修改key為first的value為C++
  • 查詢元素
map['first'];//獲取key為first的value
  • 其它
map.keys; //獲取map所有的keymap.values; //獲取map所有的valuemap.containsKey('first'); //map是否包含key為first的元素map.containsValue('Java'); //map是否包含value為Java的元素map.forEach(); //遍歷map
...


map相加 .List相加.===========================================>
Map a = {'a':1, 'b':2};
Map b = {'c':3, 'd':4};
// print(a+b);
List c = [1,2,3];
var d = [4,5];
// print(c+d);
a.addAll(b);
print(a);




運算符

Dart中的很多運算符和其它語言是相似的,個別不同用法會詳細說明。

算術運算符

  • 加減乘除:?+ , - , * , / , ~/ , %

“/” 運算符結果為浮點型;
"~/" 運算符為求整,類似Java中的"/";
"%"運算符為求余;

  • 遞增遞減:?++var , var++ , --var , var–

關系運算符

關系運算符包括:== , != , > , < , >= , <=

"=="運算符只是判斷內容是否相同。

邏輯運算符

邏輯運算符包括:! , && , ||

賦值運算符

  • 基礎運算符:?= , ??=

“??=” 表示左側變量為空時進行賦值,否則不賦值

int a;
a ??= 5; // a = 5int a = 10;
a ??= 5; //a = 10
  • 復合運算符: *+= , -= ,?= , /= , %= , ~/=

條件運算符

  • 三目運算符:?condition ? expr1 : expr2
  • ??運算符:?expr1 ?? expr2

"??"運算符表示如果expr1為null,則使用expr2的結果,否則使用expr1

String a = "Dart";
String b = "Java";
String c = a ?? b; //c = "Dart"String a;
String b = "Java";
String c = a ?? b; //c = "Java"

控制流

if語句

if語句和其它語言類似。

if(condition1){//...if(condition2){//...}
} else if(condition3){//...
} else {//...
}

for語句

var list = [1,2,3,4,5];for(var index = 0;index < list.length;index++){print(list[index]);
}

for…in語句

for(var item in list){print(item);
}

while語句

int count = 0;while(count < 5){print(count++);
} 

do…while語句

do{print(count--);
}while(count > 0 && count < 5);

break和continue

break:終止當前循環;
continue:跳出當前循環,繼續下一次循環;

switch語句

switch語句支持num、String、編譯期常量、對象和枚舉。

switch(language){case "Dart":print("Dart is my favorite");break;case "Java":print("Java is my favorite");break;case "Python":print("Python is my favorite");break;default:print("None");
}

支持使用continue跳轉標簽:

switch(language){Test:case "Dart":print("Dart is my favorite");break;case "Java":print("Java is my favorite");continue Test;case "Python":print("Python is my favorite");break;default:print("None");
}

assert語句

assert條件表達式為false時會拋出異常。

assert(str != null);

方法

方法聲明

返回類型   方法名(參數1,參數2,....){
方法體…
return 返回值 
}
  • 方法也是對象,并且有具體類型Function;
  • 返回值類型、參數類型都可省略;
void printPerson(String name,int age){print("name=$name,age=$age");
}printPerson(name,age){print("name=$name,age=$age");
}
  • 方法都有返回值。如果沒有指定返回類型,默認return null最后一句執行;
printPerson(String name,int age){print("name=$name,age=$age");//return null;
}
  • => 語法,適用于方法體只有一個表達式的情況;
printPerson(String name,int age) => print("name=$name,age=$age");

可選參數

  • 可選命名參數,調用時使用名稱傳值。
printPerson(String name,{int age,String gender}){print("name=$name,age=$age,gender=$gender");
}//方法調用
printPerson("李四",age: 20);
printPerson("李四",age: 20,gender: "Male");
  • 可選位置參數,調用時根據參數位置傳遞對應類型。
printPerson2(String name,[int age,String gender]){print("name=$name,age=$age,gender=$gender");
}//方法調用 
printPerson2("張三",18);
printPerson2("張三",18,"Female");
  • 如果存在具體參數,可選參數聲明,必須在參數后面

默認參數值

在可選參數中可以使用默認參數值,默認參數值必須是編譯期常量。

printPerson(String name,{int age = 30,String gender = "Female"}){print("name=$name,age=$age,gender=$gender");
}

方法對象

Dart中一切都對象,包括方法。所以方法也可以作為對象賦值給其它變量,也可以作為參數傳遞給其它方法。

  • 方法賦值給其它變量
void printHello(){print("Hello");
}Function func = printHello;
func();
  • 方法作為參數傳遞
//第二參數是一個方法
List listTimes(List list ,String t(str)){for(var index = 0;index < list.length;index++){list[index] = t(list[index]);}return list;
}String times(str){return str*3;
}//方法作為參數調用
var list2 = ["h","e","l","l","o"];
print(listTimes(list2, times));

匿名方法

匿名方法沒有具體的名稱,和方法有相同的特性,也是對象,也可作為變量賦值和參數傳遞。

  • 匿名方法聲明
(參數1,參數2,….){
方法體…
return 返回值 
}
  • 匿名方法賦值
var func = (str){print("Hello---$str");
};func(30);
  • 匿名方法作為參數
List listTimes(List list ,String times(str)){for(var index = 0;index < list.length;index++){list[index] = times(list[index]);}return list;
}//使用匿名方法傳遞參數
var result = listTimes(list2, (str){ return str * 3;});

閉包

  • 閉包是一個方法(對象);
  • 閉包定義在其它方法內部;
  • 閉包能夠訪問外部方法內的局部變量,并持有其狀態
//該方法返回一個閉包
a(){int count = 0;return (){print(count++);};
}//閉包的調用可以訪問局部變量count
var func = a();
func();
func();
func();
func();

?

轉載于:https://www.cnblogs.com/pythonClub/p/10557276.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/394725.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/394725.shtml
英文地址,請注明出處:http://en.pswp.cn/news/394725.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

《PHP精粹:編寫高效PHP代碼》——1.1節為什么要使用面向對象編程

本節書摘來自華章社區《PHP精粹&#xff1a;編寫高效PHP代碼》一書中的第1章&#xff0c;第1.1節為什么要使用面向對象編程&#xff0c;作者&#xff1a;&#xff08;美&#xff09;  Davey Shafik&#xff0c;更多章節內容可以訪問云棲社區“華章社區”公眾號查看 1.1 為什…

c語言數據結構系統化,C語言數據結構+數據庫+操作系統

http://cv.qiaobutang.com/post/55c419b20cf2009bd4607795第二部分是專業相關的C &#xff0c;數據庫&#xff0c;操作系統&#xff0c;數據結構。http://c.biancheng.net/cpp/u/shuju/數據(Data)是信息的載體&#xff0c;它能夠被計算機識別、存儲和加工處理。它是計算機程序加…

c語言判斷一個序列是不是另一個的子序列

1 #include <stdio.h>2 #include <string.h>//添加字符串頭文件3 4 int Subsequence(char s[], char t[]) 5 {6 int m,n,i,j;7 n strlen(s); //n表示序列S的長度8 m strlen(t); //m表示序列T的長度9 i0; 10 j0; 11 if (m>…

linux中python如何調用matlab的數據_特征錦囊:如何在Python中處理不平衡數據

今日錦囊特征錦囊&#xff1a;如何在Python中處理不平衡數據? Index1、到底什么是不平衡數據2、處理不平衡數據的理論方法3、Python里有什么包可以處理不平衡樣本4、Python中具體如何處理失衡樣本印象中很久之前有位朋友說要我寫一篇如何處理不平衡數據的文章&#xff0c;整理…

源碼安裝zabbix遇到的報錯集錦

報錯1&#xff1a;checking for mysql_config... configure: error: MySQL library not found 解決辦法&#xff1a;查找mysql_config #find / -name "mysql_config*" /usr/local/mysql/bin/mysql_config 在配置時將原有的 --with-mysql 改為 --with-mysql/usr/loca…

pso算法c++語言代碼,一C++PSO(PSO)算法

收集和變化PSO算法&#xff0c;它可用于參考實施&#xff1a;#include #include #include #include #include #define rand_01 ((float)rand() / (float)RAND_MAX)const int numofdims 30;const int numofparticles 50;using namespace std;//typedef void (*FitnessFunc)(fl…

Hadoop不適合哪些場景 哪些場景適合?

Hadoop設計的目的主要包括下面幾個方面&#xff0c;也就是所謂的適用場景&#xff1a; 1&#xff1a;超大文件 可以是幾百M&#xff0c;幾百T這個級別的文件。 2&#xff1a;流式數據訪問 Hadoop適用于一次寫入&#xff0c;多次讀取的場景&#xff0c;也就是數據復制進去之后&a…

微服務 邊界服務_遵循這些實用原則以獲取精心設計的微服務邊界

微服務 邊界服務by Jake Lumetta杰克盧米塔(Jake Lumetta) 遵循這些實用原則以獲取精心設計的微服務邊界 (Follow these practical principles to get well-designed microservices boundaries) 如何避免使微服務太小和緊密耦合 (How to avoid making your microservices too …

ShareEntryActivity java.lang.ClassNotFoundException | Android類找不到問題

錯誤堆棧&#xff1a; Process: com.mci.smagazine, PID: 23265java.lang.RuntimeException: Unable to instantiate activity ComponentInfo{com.mci.smagazine/com.mci.smagazine.apshare.ShareEntryActivity}: java.lang.ClassNotFoundException: com.mci.smagazine.apshare…

阿里Android p6準備,項目經歷準備篇——如何準備阿里巴巴P6/P7前端面試

項目經歷準備篇——如何準備阿里巴巴P6/P7前端面試在上次的校招文章之后&#xff0c;有很多同學問有沒有社招相關的東西可以寫一篇&#xff0c;現在它來了。比起校招&#xff0c;社招更加看重項目經歷項目經歷反應的思考。本文針對的是想進入阿里的P6/P7同學&#xff0c;著重講…

for in for of區別_Python 第4課:for…in循環黃金搭檔之range()函數

樂學趣學Py● 04&#xff1a;for…in循環黃金搭檔之range()函數●Python趣味小百科Python中的繪圖模塊為什么叫Turtle海龜&#xff0c;而不是cat ,dog,bird呢&#xff1f;原來Python引用了麻省理工大學教授開發的logo海龜制圖語言,能通過繪圖直觀地教大家學習編程。實踐是最好的…

《游戲設計師修煉之道:數據驅動的游戲設計》一3.8小結

3.8小結 在玩游戲期間使用的數學知識通常相當簡單&#xff0c;盡管代碼中使用的數學知識可能非常復雜。玩家不希望由于在玩游戲期間不得不處理許多數字而分心&#xff0c;因為他們的大腦必須從控制角色的動作轉換到記住數字的含義。許多游戲回避了數字&#xff0c;而是通過像計…

ubuntu下安裝配置nfs

sudo apt-get install nfs-kernel-server sudo /nfs_root vim /etc/exports 在這個文件末尾添加 /nfs_root *(rw,sync,no_root_squash) 保存退出 重啟nfs服務 sudo /etc/init.d/rpcbind restart sudo /etc/init.d/nfs-kernel-server restart 測試 sudo mount 192.168.2.1:/nf…

使命愿景價值觀_為什么在制作產品時應該專注于愿景,價值,風險和先例

使命愿景價值觀by Steve史蒂夫(Steve) 為什么在制作產品時應該專注于愿景&#xff0c;價值&#xff0c;風險和先例 (Why you should focus on vision, value, risk, and precedent when making your product) 幾周前&#xff0c;產品開發人員John Cutler發表了一篇出色的文章&…

安卓前端布局Android,Android開發的幾種常見布局

目前正在從事iOS開發&#xff0c;對于安卓就是大學的時候自學了點&#xff0c;做過幾個小的項目&#xff0c;軟件外包大賽、計算機設計大賽、移動應用大賽都拿過獎項&#xff0c;呵呵。。。現在回想起來以前大學做的安卓比賽是多么的幼稚。 從現在開始我要從頭一步一步回顧安卓…

《Cocos2D權威指南》——3.9 本章小結

3.9 本章小結 本章對Cocos2D中的幾個核心類&#xff08;CCNode、CCScene、CCLayer、CCSprite&#xff09;進行了詳細介紹&#xff0c;并且通過節點層級圖讓大家了解到Cocos2D游戲的基本組成&#xff1b;然后介紹了Cocos2D中的單例。通過完善第2章的游戲實例&#xff0c;大家對…

永恒python圖片_python 數據詞云展示實例(3)- 背景圖設置

記錄wordcloud庫背景圖的設置及樣板 之前介紹了wordcloud的基本使用wordcloud的基本使用&#xff0c;本文記錄一下如何設置背景圖。 樣圖 背景圖tim.jpg 生成樣圖dream.png 樣板 from PIL import Image,ImageSequence image Image.open(tim.jpg)#打開背景圖 graph np.array(im…

創造的快樂

早上9點半到的圖書館&#xff0c;十點左右才進入狀態&#xff0c;上午和下午的一半時間都用來看AMD的GCN架構&#xff0c;看這種官方的文檔&#xff0c;和論文一樣&#xff0c;只看摘要和圖片&#xff0c;沒有死磕的精神&#xff0c;很難有收獲&#xff0c;結果就是&#xff0c…

python心得-基本概念2

一 編程語言介紹 1.1 機器語言&#xff1a;直接用計算機能理解的二進制指令編寫程序&#xff0c;直接控制硬件 1.2 匯編語言&#xff1a;用英文標簽取代二進制指令取編寫程序&#xff0c;本質也是在直接控制硬件 1.3 高級語言&#xff1a;用人能理解的表達方式去編寫程序&#…

初創團隊最重要的是什么_我從一家出色的初創公司工作中學到的最重要的教訓...

初創團隊最重要的是什么by Yan Cui崔燕 我從一家出色的初創公司工作中學到的最重要的教訓 (The most important lessons I learned from working at an amazing startup) I recently left Space Ape Games after a wonderful year. I learnt a lot, and worked on some challe…