函数
函数定义
//定义函数(方法)
void printInfo() {
String name = 'Tobu';
return print(name);
}
//函数调用
printInfo();//Tobu
//私有函数定义 文件内可以随便调用
_privaFuction(){
...
}
函数参数
//默认参数,调用函数时一定要有
_printInfo(String name, int age) {
return print('name:$name,age:$age');
}
_printInfo('Tobu', 18);//name:Tobu,age:18
//[]位置可选参数,调用函数时可以有,也可以无,注意顺序
_printInfo(String name, int age, [String sex = '女']) {
return print('name:$name,age:$age,sex:$sex');
}
_printInfo('Tobu', 18);//name:Tobu,age:18,sex:女
_printInfo('Tobu', 18, '男');//name:Tobu,age:18,sex:男
//{}命名可选参数,调用函数时可以有,也可以无,但要输入变量名
_printInfo({String name, int age}) {
return print('name:$name,age:$age');
}
_printInfo(name: 'Tobu');//name:Tobu,age:null
_printInfo(name: 'Tobu', age: 18);//name:Tobu,age:18
//{}命名可选参数+@required 在可选参数中标注一定要嗷传入的@required,如果没传入会提示:The parameter 'name' is required.
//使用@required需要引入meta库,有flutter的material库则无须引入meta库
name: dart_lean
dependencies:
meta: ^1.1.7
import 'package:meta/meta.dart';
//实例
_printInfo({@required String name, int age}) {
return print('name:$name,age:$age');
}
_printInfo(age: 18);//name:null,age:18 报提示
_printInfo(name: 'Tobu', age: 18);//name:Tobu,age:18
箭头函数
List list = [1, 2, 3, 5, 6, 7];
list.forEach((element) => print(element));//1 2 3 5 6 7
//可以是条件表达式
list.forEach((element) => element > 3 ? print(element) : null); //5 6 7
匿名函数
/* 匿名函数结构
(function(){
//这里是块级作用域
})(参数);
*/
//自定义匿名函数
int num = (x, y) {
return x + y;
}(5, 3);
print(num);//8
//系统自带匿名函数
List list = [1, 2, 3, 4];
list.forEach((element) {
print(element * 2);
});
/*
2
4
6
8
*/
函数闭包
//不会污染全局,常驻内存,性能消耗大
fn() {
var a = 123;
return () {
a++;
print(a);
};
}
var b = fn();
b();//124
b();//125
b();//126