Dart方法的格式:
返回类型 方法名称 (参数1, 参数2, ...){
方法体
return 返回值;
}
示例:
int sumTest(int num1, int num2) {
return num1 + num2;
}
1. 嵌套方法作用域只能在外层函数中使用(与swift类似)
void funcTest() {
void hello() {
print("hello world");
}
hello();
}
2 可选参数
String getUserInfo(String name, String sex, [int age, String address]) {
return "${name} $sex $age $address";
}
print(getUserInfo("张三", "男"));
print(getUserInfo("张三", "男", 19));
print(getUserInfo("张三", "男", 18, "上海"));
/*
张三 男 null null
张三 男 19 null
张三 男 18 上海
*/
3 默认参数
String getUserInfo(String name, String sex,
[int age = 20, String address = "北京"]) {
return "${name} $sex $age $address";
}
print(getUserInfo("张三", "男"));
print(getUserInfo("张三", "男", 19));
print(getUserInfo("张三", "男", 18, "上海"));
/*
张三 男 20 北京
张三 男 19 北京
张三 男 18 上海
*/
4 命名参数
//命名参数
String getUserInfo2(String name, String sex, {int age = 20, String address}) {
return "${name} $sex $age $address";
}
print(getUserInfo2("张三", "男"));
print(getUserInfo2("张三", "男", age: 19));
print(getUserInfo2("张三", "男", age: 19, address: "上海"));
/*
张三 男 20 北京
张三 男 19 北京
张三 男 18 上海
*/
5. 箭头函数
箭头函数{}可以省略,切后面只能有一句代码
var list = [1, 2, 3, 4];
//原始
list.forEach((element) {
if (element >= 2) {
print("$element >= 2");
} else {
print("$element < 2");
}
});
// 箭头函数 + 三目运算符 ?: 省略{}
list.forEach((element) =>
(element >= 2) ? print("$element >= 2") : print("$element < 2"));
// 箭头函数 + if-else
list.forEach((element) => {
if (element >= 2) {print("$element >= 2")} else {print("$element < 2")}
});
}
6. 匿名方法
var testFn = (String a) {
print(a);
};
testFn("hello World");
//等价于 自执行方法
(String a) {
print(a);
}("hello World 2");
7. 自执行方法
// 自执行方法
((int a) {
print(a);
})(12);
Dart闭包
- 闭包是一个方法(对象)
- 闭包定义在其他方法内部
- 闭包能够访问外部方法内的局部变量,并持有其状态(这是闭包最大的作用,可以通过闭包的方式,将其暴露出去,提供给外部访问)
Function(int a) fn() {
var num = 1;
return (int a) {
num += a;
print(num);
};
}
var loadFn = fn();
loadFn(1); //2
loadFn(2); //4
loadFn(4); //8
}
网友评论