闲话Dart精髓语法2--集合篇 -
好了, 第三波我们来瞜一眼Dart里面的函数和操作符. 就是Functions和Operators. 这部分其实所有现代语言在语法上都很相像, 这篇我们依然以kotlin为比较, 过一遍注意事项.
好了, 分隔线后我们进入正题.
1. Runes:
这里带一笔上期的一个漏网之鱼. runes, 其实算是Dart对包含表情(emoji)的一系列特殊字符的单独定义,官方说法是for expressing Unicode characters in a string. 主要是它算是string的一个变种. string本身定义是UTF-16, 而runes是UTF-32.
举例: The laughing emoji () is \u{1f600}.
Dart提供一系列的strings和runes的转换.
这个对于前端语言还是很有用的. 毕竟在我们用Flutter构建app的时候, 经常还是需要用到特殊字符.
2. Functions:
a. Dart是OO型的语言, 因此Dart也和Kotlin这样的现代语言一样, Function本身是可以作为类型assign给变量或是用于传递的.
b. Dart的Functions是可以省略类型的. 当然Dart本身不建议我们这样做. 像下面的两个对于Functions写法实际上是一样的.
c. 简写格式, 这个Flutter里在main函数里runApp啊, 或是createState啊, 都是经常性会用到的. =>表达式就是{ return expr; }的简写. 这里说下kotlin的表达, kotlin是用=来实现. 也是非常常用的写法.

d. 一个function可以有两种类型的参数, 一种是required, 另一种是optional. required要放在前面, optional要放在required之后. 像下列的实例中, [String device]就是optional参数.
e. Default parameter values. Dart的function是可以预先设置default值的. 简单的使用=来进行预先赋值即可.
f. The main() function. 主函数. 这里要多说一下, 因为主函数在Flutter里也是非常非常重要的. 在Dart里, main()就是我们的入口函数. 是每个app的top-level. 当然这里的main函数和java的main函数一样, 是可以接收arguments, 以List
g. 我们可以把一个函数直接传给另一个函数. 这个在我们对于集合类的变化是经常经常用到的. 这也是流式写法的核心之一. 在java8以后, 以及kotlin上都是得到了很完美的实现. Dart这里当然也是我们的重中之重.
h. Anonymous functions. 这个也要特别说明一下, 因为在Flutter里我们也经常用到. 像setState(), onTapDown(), 如果我们并不想要把一个函数声明出来, 就可以用这种匿名表达的形式.
i. Lexical scope. 简单来说, 在Dart里, 对于nestedFunction的情况, 内层函数是可以调用外层函数的变量的. 这点和kotlin一样.
j. Return values. 对于一个函数来说, 如果各位亲没有明确声明他的return的话, return值就是null. 像foo() {} 这个函数的返回值就是null.
k. Operators. 很多基本的操作符我这里就不一一阐述了. 因为和java没有什么大不同, 大家可以直接到官方教程里面过一遍即可. 这里突出标注一下这几个: Type test operators, if null, assignment中的??=和cascade.
k-1: Type test operators. 像java的instanceof和kotlin的is. Dart的type检查操作如下表.
k-2: if null. 如果一个表达式为null, 之后应该怎样. 我们用??来定义.
k-3: assignment中的??=. 这个很有意思. 指的是, 只有一个变量一开始是null的时候, 才会被赋值. 这个可以让我们大大简写我们的初始化的逻辑或是做instance的逻辑.
k-4: cascade. 这个用起来更爽的东东要更加深深的mark下. cascade的翻译是串联. 为什么好用呢? 就是他可以实现我们一系列的操作. 这个和对集合的变换不同, 是对于一个object本身不停地一序列操作的写法. 像下面两种写法是一样的:
cascade写法写习惯后, 爽到飞起有没有~
好了, 今天就到这里了, 第三波因为闲话的是函数, 所以内容比较多. 希望大家看完没有犯困. LOL
希望大家学完语法可以去官方的Dart pad或是自己的Flutter上多练习一下, 毕竟实践是检验真理的唯一标准.
下一篇让我们一起来过一下逻辑操作和异常.
欧了, 谢谢观赏, 大家加油!
闲话Dart精髓语法4--逻辑操作篇 -