函数声明
Dart中一切都是对象,所以~函数也是。 函数的类型为:Function 函数声明类似Java
int getInt(){
return 0;
}
然鹅,如果没有声明变量类型的话,默认就是dynamic,如下:
getInt(){
return 0 ;
}
这样返回的值就是dynamic型的,注意这里是不会自动推断成int的。
同时,单行表达式的方法可以缩写,即:
int getInt(int n) => n+1;
函数与变量
由于函数也是一种对象,所以函数在Dart中可以作为变量使用。如下:
Function getInt = (int n){
return n+1;
};
既然函数可以作为变量,而函数的入参也可以用变量,那么函数能否作为入参呢? 答案是可以。 如下:
getInt(Function get){
return get()+1;
}
getInt(()=>return 0)
同理,函数也可以作为返回值。
函数特殊可选入参–可选入参
即在函数的入参中,最后可以添加中括号[]来标记可选参数。 如下:
int getInt(int origin, [int? more]){
if(precision == null){
return origin;
}
return origin + precision;
}
getInt(5);
getInt(5,6);
函数特殊可选入参–可选的带命名的参数
即在函数的入参中,可以在最后用大括号{}来包含一部分入参,这部分入参带有自己的名称。使用时必须要名称和实际入参对应。 如下:
int getInt({int a, int b}){
if(a == null){
return b;
}
if(b == null){
return a;
}
return a+b ;
}
getInt(a: 1,b:2);
getInt(a: 1);
getInt(b: 2);
Dart中提供了注解 @required 来标记必要的入参。 同时一般情况下,可选命名参数在入参比较多的时候比较实用,能准确对应入参和实际作用。
函数的表达式语法(=>)
如:
int getInt(int num){
return num + 1;
}
int getInt(int num) => num+1;
注意:
- 上述的可选带命名的参数和可选参数是不能同时使用的。
- 函数可以省略类型,包括入参和返回值的类型。但是建议能加还是加上,避免出现混淆。比如入参你想要的是个String,你在方法里使用了String的方法,但是对外部调用者来说,其实入参是dynamic类型的,他可以传int进来,就会出异常了。
- Dart中函数如果不指定返回值,默认会添加return null;
- Dart中没有Public、protected、private的声明,只有通过 _ 开头的方法或者变量代表私有。
|