閑話Dart精髓語法4--邏輯操作篇

閑話Dart精髓語法3--函數(shù)篇 - 簡書

Dart Logo

好了, 小伙伴們, 今天讓我們來瞜一眼Dart的邏輯操作部分. 和java與kotlin相比, 這部分其實沒什么很大的區(qū)別. 我們這里只是過一下.?

好了, 分隔線后我們進入正題.?


我們可以用以下的表達式來控制Dart中的邏輯走向, 當(dāng)然也包括try catch和throw. 我們一個個來看一下注意事項.

控制語句

1. If and Else

a. Dart支持如下列的If Else語句. 基本用法和java一樣.?

Dart If Else

b. 這里要注意一點. Dart里的if并不像kotlin一樣, 不是expression, 不可以有return值. 所以以下的kotlin寫法在Dart中目前是不行的.

kotlin If Else

c. 這里再次強調(diào), 重要的事情戳三遍!!!??和JavaScript不一樣. 除了true以外, Dart把其他所有的值都當(dāng)做false.

2. For loops:

這里mark下Dart里的三種for循環(huán)寫法.

a. 普通for循環(huán).?重要的事情戳三遍!!! Dart不能像kotlin一樣用for range.?

普通for循環(huán)

b.?Iterable的可以用forEach. 沒啥可說的. 基本上在kotlin里list都這么寫加個lambda. 這里要注意, 下列example里的candidate聲明不可省去. kotlin里面Iterable的聲明省去, 會自動用it代替. Dart要求我們必須定義.?

forEach

c. 高級for循環(huán), 沒啥可說的. 個人覺得用forEach更多.

for in

3. While, do-while:

a. 這個真沒啥可說的, 一樣一樣的.?

b. while先判斷condition再循環(huán).?

c. do-while先循環(huán)一次, 后做condition判斷.

while

4. Break, continue:

break跳出循環(huán)體, continue跳過此次循環(huán).

break

5. Switch:

a. Switch支持int, string, enum.?

b. 用于switch比較的objects必須同一類型, 而且不能復(fù)寫==.

c. 如果非空case的話, 必須要以break, continue, return, throw中的一種來結(jié)束. 舉例如下.

非空case缺少break報錯
空case fall through

6. Assert:

a. 開發(fā)中我們可以用assert來中斷正常的執(zhí)行.

Assert

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.?

attach message to assert

7. Exceptions:

a. 我們可以扔exception來說這里有個error.?

b. Dart允許我們?nèi)与S意的objects. 但是Dart建議我們?nèi)映鋈サ倪€是要繼承Error或是Exception. 個人感覺非常模棱兩可. ??

throw arbitrary

c. 因為扔個exception是種表達式, 我們可以在=>處扔exception. (或是任意其他表達式) 這里我們在Flutter中真正編程時, 還是蠻有用的. 可以定義一個function來扔某種異常. 方便復(fù)寫.

throw exceptions in => statements

d. rethrow是再次扔. (一次扔不夠的時候??)

rethrow

e. 這里要重點mark. on表達我們觀測的具體某一種exception. catch表示我們想抓. on和catch可以一起使用.

on和catch

f. 在catch時, e代表我們的exception, s代表Stacktrace.

e和s

g. finally用于不管扔不扔exception, 一些語句都被執(zhí)行.

finally

好了, 今天就到這里了. 這一波中的assert和exception部分我們真的還是要細扣一下doc的.

下一篇我們要搞一下Classes這個重頭戲.

歐了, 謝謝觀賞, 大家加油!

閑話Dart精髓語法5--類與對象篇 - 簡書

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

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

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