函数定义
返回类型(可以不要) 函数名(参数1,参数2,...){
方法体
return 返回值;//return返回值看情况而定,可以没有
}
/*1、可选参数*/
void f1(String name, String sex, [int age]) {
if (age != null) {
print('姓名:$name,性别:$sex,年龄:$age');
} else {
print('姓名:$name,性别:$sex,年龄保密。');
}
}
f1('小明', '男', 20);
f1('小花', '女');
/*2、命名参数*/
void f2(String name, String sex, {int age}) {
if (age != null) {
print('姓名:$name,性别:$sex,年龄:$age。');
} else {
print('姓名:$name,性别:$sex,年龄保密。');
}
}
f2('小明', '男', age:20);
f2('小花', '女');
匿名函数
var list = [1, 2, 3, 4, 5]; var newList1 = list.map((value) { if (value % 2 == 0) { return value * 2; } else { return value; } }); print(newList1.toList());
(value) { if (value % 2 == 0) { return value * 2; } else { return value; } };就是一个匿名函数。
箭头函数 必须是一行
var list = [1, 2, 3, 4, 5]; var newList2 = list.map((value) => value % 2 == 0 ? value * 2 : value);
(value) => value % 2 == 0 ? value * 2 : value;就是一个箭头函数。
自执行方法 用()();表示,运行后即可执行,不需要额外调用。第一个括号内写方法,第二个写参数,参数可不填。
((String name) { print('我是$name.'); })('自执行方法');
闭包 1、不会污染全局 2、常驻内存
fn(){ int a=10; return (){ a++; print(a); }; } var f=fn(); f(); f(); f();
打印
11
12
13