好了, 小伙伴们, 今天让我们来瞜一眼Dart的逻辑操作部分. 和java与kotlin相比, 这部分其实没什么很大的区别. 我们这里只是过一下.
好了, 分隔线后我们进入正题.
我们可以用以下的表达式来控制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循环写法.
a. 普通for循环. 重要的事情戳三遍!!! Dart不能像kotlin一样用for range.
b. Iterable的可以用forEach. 没啥可说的. 基本上在kotlin里list都这么写加个lambda. 这里要注意, 下列example里的candidate声明不可省去. kotlin里面Iterable的声明省去, 会自动用it代替. Dart要求我们必须定义.
c. 高级for循环, 没啥可说的. 个人觉得用forEach更多.
3. While, do-while:
a. 这个真没啥可说的, 一样一样的.
b. while先判断condition再循环.
c. do-while先循环一次, 后做condition判断.
4. Break, continue:
break跳出循环体, continue跳过此次循环.
5. Switch:
a. Switch支持int, string, enum.
b. 用于switch比较的objects必须同一类型, 而且不能复写==.
c. 如果非空case的话, 必须要以break, continue, return, throw中的一种来结束. 举例如下.
6. Assert:
a. 开发中我们可以用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.
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, 一些语句都被执行.
好了, 今天就到这里了. 这一波中的assert和exception部分我们真的还是要细扣一下doc的.
下一篇我们要搞一下Classes这个重头戏.
欧了, 谢谢观赏, 大家加油!