函数
匿名函数
1.有参匿名:
var func1=(name)=> print("${name}");
2.无参匿名:
var func2=()=> print("无参");
方法参数默认赋值
void main() {
/参数名要写出
add(2,b: 5,c: 8);
/按固定顺序,不用写出参数名
add2(3,5,6);
add3(list: [1,6]);
}
/调用时参数顺序可选
int add(int a,{int b=1,c=2}){
return a+b+c;
}
/调用时参数顺序固定
int add2(int a,[int b=1,c=2]){
return a+b+c;
}
/list付默认值需要const修饰
int add3({List list = const [1, 2, 3]}) {
print(list);
}
函数作为方法的参数使用
void testfor(List list, String funcaa(str)) {
for (var i = 0; i < list.length; i++) {
print('list' + i.toString() +" "+ funcaa(list[i]));
}
}
var list = ['a', 'b', 'c'];
/调用方法testfor,传入一个匿名函数作为参数
testfor(list, (str) => str * 2);
闭包
Function makeAddFunc(int a){
return (int b)=>a+b;
}
var addFunc=makeAddFunc(3);/调用makeAddFunc返回另一个函数
print(addFunc(5));
函数别名
void main() {
MyFunc myFunc=add(2,5);
myFunc=divide(10, 5);
calculator(6, 2, divide);
}
/定义函数别名
typedef MyFunc(int a,int b);
add(int a,int b){
print(a+b);
}
divide(int a,int b){
print('${a/b}');
}
void calculator(int a,int b,MyFunc myFunc){
myFunc(a,b);
}
操作符
1.~/ 是取整,print(1/2)输出0.5,print(1 ~/2) 输出0。
2.as 和 is 用法:
num a =3;
int b=a as int;
print(b is String );
print(b is! String );
3.?? 判空操作符
int d;
int a=8;
print(d??a); /如果d为null则返回a,如果d不为null则返回d。