main() {
//箭头函数,箭头函数后面只能写一行代码
List list = ["中国人", "美国人", "德国人"];
list.forEach((value) => print(value));
print("-----------------------------");
list.forEach((value) => {print(value)});
print("-----------------------------");
List lists = [1, 2, 3, 4, 5];
var newList = lists.map((value) => value > 2 ? value * 2 : value);
print(newList.toList());
print("-----------------------------");
//函数的相互调用
printNum(10);
print("-----------------------------");
//匿名方法
getNum(2);
print("-----------------------------");
//自执行方法
((int n) {
print(n);
print("自执行方法");
})(12);
print("-----------------------------");
//方法的递归
print(fn(5));
print("-----------------------------");
//闭包:方法里面嵌套方法,并且返回方法,就形成了闭包(常驻内存,不污染全局)
// 全局变量:全局变量常驻内存,污染全局
// 局部变量:不常驻内存会被垃圾回收机制回收,不污染全局
var m = method();
m();
m();
m();
}
//闭包的写法
method() {
var a = 1;
return () {
a++;
print(a);
};
}
var sum = 1;
int fn(int n) {
if (n == 1) {
return 1;
}
sum *= n;
fn(n - 1);
return sum;
}
//匿名方法
var getNum = (int value) {
print(value);
};
void printNum(int n) {
for (var i = 1; i < n; i++) {
if (isEvenNum(i)) {
print(i);
}
}
}
bool isEvenNum(int n) {
if (n % 2 == 0) {
return true;
}
return false;
}
输出结果:
[Running] dart "/Users/zhoujian/DartDemo/tempCodeRunnerFile.dart"
中国人
美国人
德国人
-----------------------------
中国人
美国人
德国人
-----------------------------
[1, 2, 6, 8, 10]
-----------------------------
2
4
6
8
-----------------------------
2
-----------------------------
12
自执行方法
-----------------------------
120
-----------------------------
2
3
4
[Done] exited with code=0 in 1.172 seconds