八、函数及相关
1 函数
和C语言一样,函数由返回值,函数名,函数体组成
int getNum(){}
方法调用,使用方法名调用即可
getNum();
2 参数
不指定类型参数
int sumNum(n){}
指定类型参数,和C语言一摸一样
int sumNum(int n,String str){}
3 可选参数
中括号内的参数可传可不传
String getUser(String name,[int age,String sex]){}
getUser('张三');
getUser('张三','男');
4 带默认参数
String getUser(String name,[int age,String sex = ‘男’]){}
getUser('张三',20,'女');
5 命名参数
String getUser(String name,{int age,String sex = ‘男’}){}
getUser('张三',age:20,sex:'女');
6 方法作为参数
a(){ print("aaaa"); } fn(aaa){ aaa(); } fn(a);
7 匿名方法
var fn=(int n){ print("这是个匿名方法"+n); }; fn(1);
8 箭头函数(注意:方法体只能写一句话,并且不要加分号)
List items = [1,2,3,4]; var newList = items.forEach((value)=>print(value));
List items = [1,2,3,4]; var newList = items.forEach((value)=>{ print(value) });
9 自执行方法
((){ print("这是自执行方法"); })(); //带参数 String str = 'aaaa'; ((String args){ print("$args"); })(str);
10 闭包
闭包的产生及作用:
全局变量特点: 全局变量常驻内存,全局变量污染全局
局部变量特点: 不常驻内存,会被垃圾回收机制回收,不会污染全局
闭包产生:常驻内存,不污染全局
闭包本质:函数嵌套函数,内部函数会调用外部函数的变量或参数。
fn(){ var a=123; return (){ a++; print(a); }; } var b = fn(); b(); b(); b();