Dart語法快速上手四《Dart2之操作符、循環(huán)、條件控制、異?!?/h2>

Dart絕大多數(shù)的操作符和其他語言很相似,先列一張表


image.png

image.png

下面說一些不常見的

  • as 強(qiáng)轉(zhuǎn)操作符
(emp as Person).firstName = 'Bob';
  • is / is! 判斷對(duì)象類型操作符
if (emp is Person) {
  // Type check
  emp.firstName = 'Bob';
}else if(emp is! Person){
.....
}
  • 空賦值操作符
b ??= value; //當(dāng)b為空的時(shí)候,value的值才會(huì)賦值給b
  • ?. 類似于Kotlin的非空判斷,a?.b 在a不為空的時(shí)候執(zhí)行a.b

  • for in循環(huán),除了常規(guī)的for循環(huán)以外,還支持for in 循環(huán)

var collection = [0, 1, 2];
for (var x in collection) {
  print(x); // 0 1 2
}
  • Switch case 除了正常的比較也是支持枚舉類型的
var command = 'OPEN';
switch (command) {
  case 'OPEN':
    executeOpen();
    // ERROR: Missing break

  case 'CLOSED':
    executeClosed();
    break;
}

還有一種用法是在進(jìn)入一個(gè)case之后根據(jù)判斷如果true我要執(zhí)行A case 如果是false我要執(zhí)行 B case,Dart也提供了支持,利用continue關(guān)鍵字加上自定義的標(biāo)簽來完成

var command = 'CLOSED';
switch (command) {
  case 'CLOSED':
    executeClosed();
    continue nowClosed;
  // Continues executing at the nowClosed label.

  nowClosed:
  case 'NOW_CLOSED':
    // Runs for both CLOSED and NOW_CLOSED.
    executeNowClosed();
    break;
}

斷言

Dart里面支持?jǐn)嘌?,你必須確保判斷是正確的才能通過這個(gè)斷言,斷言在生產(chǎn)環(huán)境中不起作用

// Make sure the variable has a non-null value.
assert(text != null);

// Make sure the value is less than 100.
assert(number < 100);

// Make sure this is an https URL.
assert(urlString.startsWith('https'));

異常

  • throw Exception
    void distanceTo(Point other) => throw UnimplementedError();//這是拋出異常的方法

  • catch

try {
  breedMoreLlamas();
} on OutOfLlamasException {
  // A specific exception
  buyMoreLlamas();
} on Exception catch (e) {
  // Anything else that is an exception
  print('Unknown exception: $e');
} catch (e) {
  // No specified type, handles all
  print('Something really unknown: $e');
}

on和catch的區(qū)別應(yīng)該在于是否關(guān)心異常的實(shí)例

  • 捕獲堆棧信息
try {
  // ···
} on Exception catch (e) {
  print('Exception details:\n $e');
} catch (e, s) {
  print('Exception details:\n $e');
  print('Stack trace:\n $s');
}

你可以在catch里面多增加一個(gè)參數(shù),第一個(gè)是異常的實(shí)例,第二個(gè)則是錯(cuò)誤的堆棧信息

  • rethrow
    Dart允許你在捕獲異常的同時(shí)進(jìn)行傳播,如果你需要這樣做,請(qǐng)使用rethrow關(guān)鍵字
void misbehave() {
  try {
    dynamic foo = true;
    print(foo++); // Runtime error
  } catch (e) {
    print('misbehave() partially handled ${e.runtimeType}.');
    rethrow; // Allow callers to see the exception.
  }
}

void main() {
  try {
    misbehave();
  } catch (e) {
    print('main() finished handling ${e.runtimeType}.');
  }
}

By the way .Dart does support "Finally" keyWord too.

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 第2章 基本語法 2.1 概述 基本句法和變量 語句 JavaScript程序的執(zhí)行單位為行(line),也就是一...
    悟名先生閱讀 4,596評(píng)論 0 13
  • 目錄 參考資料 語言特性 關(guān)鍵字 變量與常量 數(shù)據(jù)類型 運(yùn)算符 operators 控制流程語句 異常 Excep...
    GuoDongW閱讀 185,937評(píng)論 22 341
  • 一、Java 簡(jiǎn)介 Java是由Sun Microsystems公司于1995年5月推出的Java面向?qū)ο蟪绦蛟O(shè)計(jì)...
    子非魚_t_閱讀 4,639評(píng)論 1 44
  • 一個(gè)好醫(yī)生,病人一說話,他就能聽出病人哪個(gè)臟器有問題,比如是否腎虛,肺是否有問題等。其實(shí)在臨床上,有一些很有趣的判...
    荊浩29閱讀 257評(píng)論 0 0
  • 世間一切的美好,恐怕都是始于那偶然的相遇。這就像春遇見了冬,便有了歲月;天遇見了地,便有了永恒。而我們遇見了太極,...
    武當(dāng)功夫傳人鄭師和閱讀 233評(píng)論 0 0

友情鏈接更多精彩內(nèi)容