箭头函数
箭头函数中只能写一句代码,不能写多句执行代码
箭头函数改写 forEach
List list = ['苹果', '香蕉', '西瓜'];
list.forEach((value) {
print(value);
});
list.forEach((value) => print(value));
list.forEach((value) => {print(value)});
箭头函数中的 map
List list = [4, 1, 2, 3, 4];
var newList = list.map((value) {
if (value > 2) {
return value * 2;
}
return value;
});
print(newList.toList());
var newList2 = list.map((value) => value > 2 ? value * 2 : value);
print(newList2.toList());
箭头函数判断是否为偶数
bool isEvenNumber(int n) => n % 2 == 0 ? true : false;
print(isEvenNumber(10));
匿名方法
var printNum = () {
print(1212123);
};
printNum();
var printNumAdd = (int n) {
print(n + 12);
};
printNumAdd(12);
自执行方法
(() {
print('我是自执行方法');
})();
((int n) {
print(n);
print('我是自执行方法');
})(12);
方法的递归
var sum = 1;
fn(int n) {
sum *= n;
if (n == 1) {
return;
}
fn(n - 1);
}
fn(5);
print(sum);
闭包:
1、全局变量特点: 全局变量常驻内存、全局变量污染全局
2、局部变量的特点: 不常驻内存会被垃圾机制回收、不会污染全局
想实现的功能:
1.常驻内存
2.不污染全局
产生了闭包,闭包可以解决这个问题…..
闭包: 函数嵌套函数, 内部函数会调用外部函数的变量或参数, 变量或参数不会被系统回收(不会释放内存)
闭包的写法: 函数嵌套函数,并return 里面的函数,这样就形成了闭包。
全局变量
var a = 123;
fn() {
a++;
print(a);
}
fn();
fn();
fn();
局部变量
printInfo() {
var myNum = 123;
myNum++;
print(myNum);
}
printInfo();
printInfo();
printInfo();
闭包
fn() {
var a = 123; /*不会污染全局 常驻内存*/
return () {
a++;
print(a);
};
}
var b = fn();
b();
b();
b();
THE END