定义函数
返回值类型 方法名 (参数){
方法体
return 返回值;
}
int test(int a, int b){
return a + b;
}
main(){
int a = 1;
int b = 2;
int c = test(a, b);
print(c); //3
}
函数参数
void test(int a, {int b, String c}){
print("$a $b $c");
}
main(){
test(1); //1 null null
test(1, b:2); //1 2 null
test(1, c:'hello'); //1 null hello
test(1, b:2, c:'hello'); //1 2 hello
}
- 位置参数
[]中定义的参数是位置参数, 位置必须一一对应
void test(int a, [int b, String c]){
print("$a $b $c");
}
main(){
test(1); //1 null null
test(1, 2); //1 2 null
test(1, 2, 'hello'); //1 2 hello
}
- 默认参数
使用等号指定参数默认值, 默认值只能是编译时常量
void test(int a, {int b=3}){
print("$a $b");
}
main(){
test(1); //1 3
}
- 函数对象
1.方法可以作为对象赋值给其他变量
2.方法可以作为参数传递给其他方法
main(){
//1. 方法作为对象赋值给其他变量
Function f1 = sayHello;
f1(); //sayHello方法调用, 输出hello
//2. 方法作为参数传递给其他方法
testSayHello(sayHello); //hello
}
void sayHello(){
print("hello");
}
void testSayHello(Function sayHello){
sayHello();
}
- 匿名函数
1.可赋值给变量, 通过变量调用
2.可在其他方法中直接调用或传递给其他方法
main(){
//定义匿名函数
var f1 = (String str){
print("Hello $str");
};
f1("Dart"); //Hello Dart
}
- 闭包
1.闭包是一个方法
2.闭包定义在其他方法内部
3.闭包能够访问外部方法内的局部变量, 并持有其状态
网友评论