返回类型 方法名(){}
方法可以嵌套
可选参数,默认参数
String printUserInfo(String userName,[int age=21,String sex="male"]){//[]为可选,=是默认
if(age!=null){
return "$userName----$age";
}
return "$userName----$age";
}
void main() {
print(printUserInfo("libai",21));
}
参数命名参数:就是调用时要写明参数名称
String printUserInfo(String userName,{int age=21,String sex="male"}){//{}为命名,=是默认
if(age!=null){
return "$userName----$age";
}
return "$userName----$age";
}
void main() {
print(printUserInfo("libai",age:21));
方法作为参数
fn1(){
print("hello 1");
}
fn2(hanshu){
fn1();
}
void main() {
fn2(fn1);}
匿名方法
var fn=(){
print("匿名方法赋值给了fn");
};
fn();
箭头函数
List l2=[4,2,3,8,12];
// var l3=l2.map((value){
// return value*2;
// } );
var l3=l2.map((value)=>value>2?value*2:value);
print(l3.toList());
自执行方法
()() 一运行就执行,而不需要调用
((){
print("hello");
})();
加了参数
((int n){
print("hello $n"); //打印出12
})(12); //12表示传入参数是12
递归函数
int sum=1;
fn(int n){
sum*=n;
if(n==1){return;}
fn(n-1);
}
fn(5);
print(sum);
闭包-较少使用
全局变量:全局变量常驻内存,污染全局
局部变量:不常驻内存
想实现:常驻内存,不污染环境---闭包
闭包:函数调用函数,内部函数会调用外部函数的变量或参数,变量不会被系统回收
写法:函数嵌套函数,病return里面的函数,就形成了闭包
fn(){
var a=123;//不会污染全局,常驻内存
return(){
a++;
print(a);
};
}
var b=fn();
b();
b();