函数
可选参数
Dart是一个面向对象的语言,即使是函数也是对象,所以函数也可以被声明成变量,或者作为另一个函数的参数。也可以像调用函数一样调用类的实例变量,这一点和Java类似(由于本人原先是做Java的,所以看语言的特性经常会以Java来类比)。
同样,跟Java一样,函数的参数可分为有参和无参两种类型。
以下以两种不同的代码段带大家认识以下Dart的函数。
/*判断*/
getNumStatus(num a) {
if(a > 0) {
return "数字大于零";
}else if(a==0){
return "数字等于零";
}else{
return "数字小于零";
}
}
这种和Java 的写法没有太大的区别,与Java不同的是Dart可以将参数用中括号[]括起来,用来表明是可选位置的参数,例如在一个学生信息表中,其中Name和Sex,是必传的,From和Phone是可以选择性的传递(传或不传均可),代码如下:
//获取用户信息
String getUserInfo(String name, String sex, [String phone,String from]) {
var info = '$name的性别是$sex';
if (from != null) {
info = '$info来自$from';
}
if(phone !=null){
info = '$info手机号是:$phone';
}
return info;
}
void test() {
print(getUserInfo('小帅', '男'));
}
这种就是Dart的可选参数,调用上面的方法的输出是“小帅的性别是男”,但是不会打印出手机号和性别,这点是和Java不一样的(在我印象中Java是不可以这么写的,如有错误,还请指教。)
参数默认值
在Java中方法是分为有返回值的方法和无返回值的方法,但是在Dart中如果参数指定了默认值,当不传值是,函数里会使用这个值的默认值(正常情况下这个默认值都会为null),如果传入了指定的值,则会返回指定的返回值,修改上述代码如下:
//获取用户信息
String getUserInfo(String name, String sex, [String phone = "110",String from = "中国"]) {
var info = '$name的性别是$sex';
if (from != null) {
info = '$info来自$from';
}
if(phone !=null){
info = '$info手机号是:$phone';
}
return info;
}
void test() {
print(getUserInfo('小帅', '男'));
}
上述代码输出“小帅的性别是男来自中国手机号是:110”,这点也和Java不太一样。
main函数
这里和Java区别不大,程序必须拥有main函数,并且main函数也是程序的入口,Dart实例代码如下:
void main() => runApp(MyApp());
函数返回值
在Dart语言中,函数的返回值有以下需要注意的几点
- 所有的函数都会有返回值。
- 如果没有指定函数返回值,则默认的返回值是null。
- 没有返回值的函数,系统会在最后添加隐式的return语句。