Flutter基礎 -- Dart 語言 -- 注釋函數表達式

目錄

1. 注釋

1.1?單行注釋

1.2 多行注釋

1.3?文檔注釋

2. 函數

2.1?定義

2.2 可選參數

2.3 可選參數 默認值

2.4?命名參數 默認值

2.5?函數內定義

2.6 Funcation 返回函數對象

2.7?匿名函數

2.8 作用域

3. 操作符

3.1 操作符表

3.2 算術操作符

3.3?相等相關的操作符

3.4?類型判定操作符

3.5?條件表達式

3.6?位和移位操作符

3.7?級聯操作符

3.8?其他操作符

4.?流程控制

5.?異常

錯誤的兩種類型

5.1?Exception 類

5.2?Error 類

5.3?拋出錯誤

5.4?捕獲錯誤

5.5?重新拋出錯誤以及finally

5.6?自定義異常


1. 注釋

1.1?單行注釋

// Symbol libraryName = new Symbol('dart.core');

1.2 多行注釋

/*

* Symbol

*

Symbol libraryName = new Symbol('dart.core'); MirrorSystem mirrorSystem = currentMirrorSystem(); LibraryMirror libMirror = mirrorSystem.findLibrary(libraryName); libMirror.declarations.forEach((s, d) => print('$s - $d'));

*/

一般用在需要說明 類 函數 功能 輸入 輸出

1.3?文檔注釋

/// `main` 函數
///
/// 符號
/// 枚舉
///
void main() {
? ...
}

類、函數 請用 /// 方式定義,后期導出文檔有幫助

2. 函數

2.1?定義

int add(int x) {return x + 1;
}調用
add(1);

2.2 可選參數

int add(int x, [int? y, int? z]) {if (y == null) {y = 1;}if (z == null) {z = 1;}return x + y + z;
}調用
add(1, 2);

可選參數

使用方括號?[]?來定義可選參數?y?和?z。調用函數時可以選擇傳入或者不傳入這兩個參數。

可空類型

int??表示?int?類型的值可以是?null。如果沒有使用?int?,那么 Dart 不允許把?null?賦值給該參數。

默認值邏輯

在函數內部,通過?if (y == null)?和?if (z == null)?檢查?y?和?z?是否為?null,如果是則賦值為默認的?1

2.3 可選參數 默認值

int add(int x, [int y = 1, int z = 2]) {return x + y;
}調用
int(1, 2);

就是cpp的缺省值

2.4?命名參數 默認值

int add({int x = 1, int y = 1, int z = 1}) {return x + y + z;
}調用
int(x: 1, y: 2);

這個會比可選參數更靈活,可以調用的時候再指定傳參

2.5?函數內定義

void main(){int add(int x){return x + x;}print(add(1));
}

cpp的就是lambda

2.6 Funcation 返回函數對象

Function makeAdd(int x) {return (int y) => x + y;
}調用
var add = makeAdd(1);
print(add(5));

這里是add接收了一個函數對象,然后在print里面調用了返回的函數對象

2.7?匿名函數

下面代碼定義了只有一個參數 item 且沒有參數類型的匿名方法。 List 中的每個元素都會調用這個函數,打印元素位置和值的字符串:

const list = ['apples', 'bananas', 'oranges'];
list.forEach((item) {print('${list.indexOf(item)}: $item');
});

箭頭函數 如果只有一個表達式

list.forEach((item) => print('${list.indexOf(item)}: $item'));

2.8 作用域

下面是一個嵌套函數中變量在多個作用域中的示例:

bool topLevel = true;void main() {var insideMain = true;void myFunction() {var insideFunction = true;void nestedFunction() {var insideNestedFunction = true;assert(topLevel);assert(insideMain);assert(insideFunction);assert(insideNestedFunction);}}
}

注意 nestedFunction() 函數可以訪問包括頂層變量在內的所有的變量。簡單說就是被包含的作用域內可以訪問包含其的外部變量

3. 操作符

3.1 操作符表

優先級順序?上面左邊?優先級高于?右邊下面

3.2 算術操作符

3.3?相等相關的操作符

3.4?類型判定操作符

  int a = 123;String b = 'ducafecat';String c = 'abc';print(a as Object);print(b is String);print(c is! String);

3.5?條件表達式

  bool isFinish = true;String txtVal = isFinish ? 'yes' : 'no';bool isFinish;isFinish = isFinish ?? false;orisFinish ??= false;

3.6?位和移位操作符

3.7?級聯操作符

  StringBuffer sb = StringBuffer();sb..write('hello')..write('word')..write('\n')..writeln('doucafecat');

如果沒有級聯操作符,就需要 sb.write(...);sb.write(...);....

3.8?其他操作符

  String a;print(a?.length);

4.?流程控制

if else;for;while;do while;switch case;break;continue;相信這些就不用博主多說了哈

值得一提的是 continue 有一點不一樣

continue 跳轉指定位置(就像cpp的go to,新增了這個功能)

String command = "close";
switch (command) {case "open":print("open");break;case "close":print("close");continue doClear;case "close2":print("close2");continue doClear;doClear:case "doClose":print("doClose");break;default:print("other");
}

5.?異常

錯誤的兩種類型

5.1?Exception 類

Exception class

可以捕獲,可以安全處理

5.2?Error 類

Error class

一般用在不可恢復,容易崩潰的情況

5.3?拋出錯誤

  // Exception 對象throw new FormatException('這是一個格式錯誤提示');// Error 對象throw new OutOfMemoryError();// 任意對象throw '這是一個異常';

5.4?捕獲錯誤

  try {// throw new FormatException('這是一個格式錯誤提示');throw new OutOfMemoryError();} on OutOfMemoryError {print('沒有內存了');} catch (e) {print(e);}

5.5?重新拋出錯誤以及finally

  try {throw new OutOfMemoryError();} on OutOfMemoryError {print('沒有內存了');rethrow;} catch (e) {print(e);} finally {print('end');}

try里面是拋出錯誤,on是捕獲特定錯誤,catch是捕獲所有錯誤,retgrow是重新拋出異常,finally是不管有沒有錯都會走的!

5.6?自定義異常

implements關鍵字可以自定義異常

class DioError implements Exception {DioError(this.message, this.type);final String message;final String type;@overrideString toString() {return 'DioError{message: $message, type: $type}';}
}void main(List<String> args) {throw DioError("error", "type");
}

創作不易,希望讀者三連支持?💖
贈人玫瑰,手有余香?💖

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

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

相關文章

上海亞商投顧:滬指沖高回落 兩市成交金額僅剩7000億

上海亞商投顧前言&#xff1a;無懼大盤漲跌&#xff0c;解密龍虎榜資金&#xff0c;跟蹤一線游資和機構資金動向&#xff0c;識別短期熱點和強勢個股。 一.市場情緒 三大指數昨日沖高回落&#xff0c;午后一度集體翻綠&#xff0c;臨近尾盤小幅回升。光伏產業鏈再度走強&#…

aws 在ecs外部實例上運行gpu負載

參考資料 https://docs.amazonaws.cn/zh_cn/AmazonECS/latest/developerguide/ecs-gpu.htmlhttps://docs.amazonaws.cn/AWSEC2/latest/UserGuide/accelerated-computing-instances.html#gpu-instanceshttps://docs.amazonaws.cn/AWSEC2/latest/UserGuide/install-nvidia-drive…

LeetCode 63.不同路徑Ⅱ

思路&#xff1a; 在有障礙物的地方增加一個判斷即可 class Solution { public:int uniquePathsWithObstacles(vector<vector<int>>& obstacleGrid) {int dp[105][105];int mobstacleGrid.size();int nobstacleGrid[0].size();for(int i0;i<m;i){for(int j0…

K8s集群之 存儲卷 PV PVC

目錄 默寫 1 如何將pod創建在指定的Node節點上 2 污點的種類(在node上設置) 一 掛載存儲??????? 1 emptyDir存儲卷 2 hostPath存儲卷 ①在 node01 節點上創建掛載目錄 ② 在 node02 節點上創建掛載目錄 ③ 創建 Pod 資源 ④ 在master上檢測一下&#xff1a;…

C++ vector 模擬實現

vector的底層也是一個動態數組&#xff0c;他與 string 的區別就是&#xff0c;string 是專門用來存儲字符類數據的&#xff0c;為了兼容C語言&#xff0c;使用C語言的接口&#xff0c;在string的動態數組內都會都開一塊空間用來存 \0 &#xff0c;而vector則不會。 首先我們要…

【Linux多線程】認識多線程創建線程

文章目錄 什么是多線程為什么稱linux下的線程是輕量級進程呢&#xff1f; 線程的優點線程的缺點線程異常線程和進程創建線程1.pthread_create2.pthread_self 什么是多線程 進程是正在運行的程序的實例&#xff0c;而線程&#xff08;thread&#xff09;是進程中的一個執行路線…

python 刪除pdf 空白頁

環境 python 3.10 PyPDF2 3.0.1 安裝 pip install PyPDF2流程 將空白頁和內容頁讀取出來&#xff0c;看看內部結構有什么不同以此為依據&#xff0c;遍歷整個PDF 文件&#xff0c;標記處有內容的頁面&#xff0c;寫入到另外一個PDF文件。 python 代碼 # 每一個頁都是一個…

Springboot郵件發送配置

Springboot郵件發送配置 pom.xml依賴&#xff1a; <dependency><groupId>org.eclipse.angus</groupId><artifactId>jakarta.mail</artifactId><version>2.0.3</version> </dependency> <dependency><groupId>or…

跨域的解決方案

1. 計算機更改跨域 1.C盤->Windows->System32->drivers->etc 2.修改hosts 文件2. Chrome瀏覽器的跨域設置 操作步驟&#xff1a;1.打開我的電腦——C盤 新建一個文件夾&#xff0c;命名為MyChromeDevUserData2.右鍵——Chrome——快捷方式——目標&#xff0c;在…

ChatGPT成知名度最高生成式AI產品,使用頻率卻不高

5月29日&#xff0c;牛津大學、路透社新聞研究所聯合發布了一份生成式AI&#xff08;AIGC&#xff09;調查報告。 在今年3月28日—4月30日對美國、英國、法國、日本、丹麥和阿根廷的大約12,217人進行了調查&#xff0c;深度調研他們對生成式AI產品的應用情況。 結果顯示&…

ElementUI之el-table標題列中顯示el-tooltip

ElementUI之el-table標題列中顯示el-tooltip 文章目錄 ElementUI之el-table標題列中顯示el-tooltip1. el-table標題列中顯示el-tooltip2. 實現代碼3. 展示效果 1. el-table標題列中顯示el-tooltip 在el-table-column標簽內添加具名插槽v-slot:header 在el-tooltip標簽中使用具…

【幾何】輸入0-360度任意的角度,求上面直線與橢圓相切點的坐標計算公式

?輸入0-360度任意的角度,求上面直線與橢圓相切點的坐標計算公式 使用積分計算 使用到的公式有橢圓公式: x 2 a 2 + y 2 b 2 = 1 \frac{x^2}{a^2}+\frac{y^2}{b^2} = 1 a2x2?+b2y2?=1 平面旋轉公式 X r = cos ? θ ? ( X s ? X O ) ? sin ? θ ? ( Y s ? Y O ) + X …

端午節粽子龍舟主題互動趣味小游戲效果是什么

端午三天樂&#xff0c;無論節日當天還是之前&#xff0c;行業商家都可以自己的品牌為主借勢營銷&#xff0c;趣味活動形式玩法和內容呈現達成多種效果&#xff0c;品牌傳播、公眾號漲粉、線下互動、商品促銷、用戶促活等。 在【雨科】平臺擁有多款端午節互動小游戲類型&#…

網易狼人殺 設置點擊自動發言

我們玩網易狼人殺 剛開始 都會發現 要按住麥克風才能發言 不得不說 相當的麻煩 我們可以點擊如下圖 右上角這個設置的齒輪 新彈出的設置面板上 勾選這個點擊發言 然后 我們只需要 點一下 就可以進入發言狀態 然后 再點一下即可停止發言 會方便非常多

zabbix事件告警監控:如何實現對相同部件觸發器告警及恢復的強關聯

有一定Zabbix使用經驗的小伙伴可能會發現&#xff0c;接收告警事件時&#xff0c;其中可能包含著大量不同的部件名&#xff0c;同一部件的事件在邏輯上具有很強關聯性&#xff0c;理論上應保持一致的告警/恢復狀態&#xff0c;但Zabbix默認并未對它們進行關聯&#xff0c;直接后…

AIGC降重:如何2分鐘降低論文AI率和查重率?推薦使用SpeedAI科研小助手

確保學術論文的獨立性與誠信性&#xff0c;對于學業的成就及學位的獲取至關重要&#xff0c;其中&#xff0c;論文的人工智能查重與降低AIGC相似度扮演著核心角色。 常規的查重手段主要圍繞查重軟件的運用和個體的自行審查&#xff1b;而降重則通常通過語句重組、同義替換、內…

單細胞分析(Signac): PBMC scATAC-seq 基因組區域可視化

引言 在本教學指南中&#xff0c;我們將探討由10x Genomics公司提供的人類外周血單核細胞&#xff08;PBMCs&#xff09;的單細胞ATAC-seq數據集。 加載包 首先加載 Signac、Seurat 和我們將用于分析人類數據的其他一些包。 if (!requireNamespace("EnsDb.Hsapiens.v75&qu…

ModuleNotFoundError: No module named ‘osgeo‘

顯示無osgeo模塊 pip install osgeo顯示失敗 方法&#xff1a; 確保你已經安裝了正確的依賴項&#xff0c;例如GDAL、GEOS和PROJ等。 方法1&#xff1a;pip install gdal 失敗 方法2&#xff1a;官網下載失敗&#xff0c;下載地址&#xff1a;https://www.lfd.uci.edu/~gohl…

在Linux系統中,使用OpenSSL生成私有證書文件,并提取私鑰的步驟如下:

在Linux系統中&#xff0c;使用OpenSSL生成私有證書文件&#xff0c;并提取私鑰的步驟如下&#xff1a; 生成私鑰&#xff08;如果還沒有私鑰的話&#xff09;&#xff1a; openssl genpkey -algorithm RSA -out private.pem -pkeyopt rsa_keygen_bits:2048 生成自簽名證書&…

設置自動刷新數據透視表的數據源

數據透視表數據源的自動刷新 一般情況操作&#xff1a; 自動刷新操作&#xff1a; 1、定義名稱名稱 引用位置&#xff1a;OFFSET(Sheet1!$A$1,0,0,COUNTA(Sheet1!$A:$A),COUNTA(Sheet1!$1:$1)) 2、數據透視表的數據源更改為【源數據】—— 即前面定義的名稱 3、數據——全部…