一、函数定义格式
返回类型 方法名吃(参数1,参数2...){ 方法体 return 返回值; }
返回类型、参数可以省略,如没有返回值,不需要return 返回值;
//没有明确是否有返回值,没有返回值 fn1() {} //没有明确是否有返回值,有返回值 fn2() { return 1; } //明确没有返回值 void f3() {} //明确有返回值 int f4() { return 5; } //明确有返回值,有参数 int f6(int a,int b) { return a+b; }
二、有参函数
// 自定义方法 int add2(int a, int b) { return a + b; } print(add2(3, 4)); //55
三、匿名函数
var fn3 = () { print("匿名方法"); }; fn3(); //匿名方法
四、自执行函数
// 自执行方法 ((){print("我是自执行方法!");})(); // 带参数自执行方法 ((int a){ print(a);//10 })(10); }
五、可选参数函数
// 自定义方法,可选参数 String printUserInfo(String username, [age]) { if (age == null) { return username; } return "$username---$age"; } print(printUserInfo("zhangsan")); //zhangsan print(printUserInfo("zhangsan", 56)); //zhangsan---56
六、默认参数函数、命名参数
//自定义方法,默认参数 int add3([int a = 1, int b = 2]) { return a + b; } //自定义方法,命名参数 int add4(int a, {int b = 4}) { return a + b; } print(add3()); //3 print(add3(9, 89)); // 98 print(add4(1, b: 16)); //17
七、函数参数为另一个函数
//自定义方法,参数为一个方法 fn1() { print("fn1"); } fn2(fname) { fname(); } fn2(fn1); //fn1
八、函数之间调用
//判断一个数是否为偶数 bool isEvenNumber(int n) { if (n % 2 == 0) { return true; } return false; } //打印0-n的所有偶数 void printNum(int n) { for (int i = 0; i <= n; i++) { if (isEvenNumber(i)) { print(i); } } } printNum(7); //0 2 4 6
九、箭头函数
["1", "2", "3"] .map((e) => "$e$e") .toList() .forEach((element) => print(element)); // 11 22 33
十、递归函数
main(){ // 递归计算阶乘 var sum=1; int fn(int n){ sum*=n; if (n!=1) { fn(n-1); } return sum; } print(fn(5)); //120 }