好了, 小伙伴們, 今天讓我們來瞜一眼Dart的邏輯操作部分. 和java與kotlin相比, 這部分其實沒什么很大的區(qū)別. 我們這里只是過一下.?
好了, 分隔線后我們進入正題.?
我們可以用以下的表達式來控制Dart中的邏輯走向, 當然也包括try catch和throw. 我們一個個來看一下注意事項.
1. If and Else
a. Dart支持如下列的If Else語句. 基本用法和java一樣.?
b. 這里要注意一點. Dart里的if并不像kotlin一樣, 不是expression, 不可以有return值. 所以以下的kotlin寫法在Dart中目前是不行的.
c. 這里再次強調, 重要的事情戳三遍!!!??和JavaScript不一樣. 除了true以外, Dart把其他所有的值都當做false.
2. For loops:
這里mark下Dart里的三種for循環(huán)寫法.
a. 普通for循環(huán).?重要的事情戳三遍!!! Dart不能像kotlin一樣用for range.?
b.?Iterable的可以用forEach. 沒啥可說的. 基本上在kotlin里list都這么寫加個lambda. 這里要注意, 下列example里的candidate聲明不可省去. kotlin里面Iterable的聲明省去, 會自動用it代替. Dart要求我們必須定義.?
c. 高級for循環(huán), 沒啥可說的. 個人覺得用forEach更多.
3. While, do-while:
a. 這個真沒啥可說的, 一樣一樣的.?
b. while先判斷condition再循環(huán).?
c. do-while先循環(huán)一次, 后做condition判斷.
4. Break, continue:
break跳出循環(huán)體, continue跳過此次循環(huán).
5. Switch:
a. Switch支持int, string, enum.?
b. 用于switch比較的objects必須同一類型, 而且不能復寫==.
c. 如果非空case的話, 必須要以break, continue, return, throw中的一種來結束. 舉例如下.
6. Assert:
a. 開發(fā)中我們可以用assert來中斷正常的執(zhí)行.
b.?Assert 語句在production code中不會有任何作用. 就是給我們在debug mode中提供方便的. 注意, Flutter中debug mode是自動打開的. 因為我們通常是用flutter run. 這時, Dart的assert是enable的. 如果我們要release的話, 可以使用flutter run --release來使用release mode. 具體可參考:?Debugging Flutter Apps - Flutter
c. 我們可以給assert附上message.?
7. Exceptions:
a. 我們可以扔exception來說這里有個error.?
b. Dart允許我們扔隨意的objects. 但是Dart建議我們扔出去的還是要繼承Error或是Exception. 個人感覺非常模棱兩可. ??
c. 因為扔個exception是種表達式, 我們可以在=>處扔exception. (或是任意其他表達式) 這里我們在Flutter中真正編程時, 還是蠻有用的. 可以定義一個function來扔某種異常. 方便復寫.
d. rethrow是再次扔. (一次扔不夠的時候??)
e. 這里要重點mark. on表達我們觀測的具體某一種exception. catch表示我們想抓. on和catch可以一起使用.
f. 在catch時, e代表我們的exception, s代表Stacktrace.
g. finally用于不管扔不扔exception, 一些語句都被執(zhí)行.
好了, 今天就到這里了. 這一波中的assert和exception部分我們真的還是要細扣一下doc的.
下一篇我們要搞一下Classes這個重頭戲.
歐了, 謝謝觀賞, 大家加油!