Dart 的函数
Apr 23, 2018
函数是 Dart程序运行的基本单元,在本篇文章中,我们系统地认识一下 Dart的函数。
Dart 是一门真正的面向对象的编程语言,所以函数也是一种对象的实例,它也有类型,叫做 Function
. 这就表示函数也可以赋值给变量,也可以作为函数参数传递。
一个简单的函数如下:
1 | bool isZero(int number) { |
尽管 Dart官方教程希望你给函数的返回加上类型,但你依旧可以忽略返回类型,让编译器自行推断:
1 | isZero(int number) { |
如果像上文的代码只有一行表达式的话,可以用箭头函数来表达:
1 | bool isZero(int number) => number == 0; |
可选参数
可选参数其实有两种含义
可选的具名参数
什么是具名?看代码
1 | // 定义了一个这样的函数 |
要达到具名函数的用法,那就在定义的时候给参数加上 {}
1 | void enableFlags({bool bold, bool hidden}) { |
可选的位置参数
和 JavaScript不一样的地方是,Dart某些位置可忽略的参数必须在函数定义时用 []
符号指定:
1 | // device参数在调用时可以忽略不传 |
参数默认值
和其他语言一样,你可以给函数形参加上默认值,如果该参数未传递,则默认值为 null
1 | void enableFlags({bool bold = false, bool hidden = false}) { |
main函数
main 函数是一个 dart应用的入口。 main函数返回类型是 void
,可选参数作为一个 List<String>
类型传递进来.
1 | // 调用方法: |
如果你要使用 Dart来写一个命令行工具,你可以用 args library来解析命令行参数。
匿名函数
上述见到的函数都是命名的,Dart当然也可以使用匿名函数。
比如说使用一个匿名函数迭代 List
1 | void main() { |
语义化的作用域
该部分内容比较简单,在 Dart介绍中已经认识过,不再赘述。
返回值
Dart中所有的函数都具有返回值,如果一个表达式或函数的返回值没有指定,那么默认就是 null
。
函数的级联
函数的级联也叫链式调用。Dart 原生语法支持链式调用,只需要使用 ..
1 | querySelector('#confirm') // Get an object. |