上一篇我们了解到Dart的变量声明方式和区别以及一些常见操作,也都比较的基础。我们今天再来讲一讲。
在Dart语言中,函数(方法)相当于一个对象。定义函数的方法,也跟Java非常类似,
不过也有一些区别。比如返回类型跟参数类型可以省略,不过我自己还是比较建议显示去指定类型。毕竟
代码可读性和调试会方便点。看一下代码,两个函数的效果是一样的。
main() {
String s1 = printStr("李雷");
print('s1:'+s1);
}
String printStr(String name){
return "hello,$name";
}
printStr(name){
return "hello,$name";
}
这里需要注意的是Dart中,函数都有返回值,没有指定返回值的时候,函数会返回null。如果跟Java 一样
用 void 指定返回值的话,那这个函数就不会返回值了。
参数
在讲参数之前,我们先来看看一段java代码,在java中,我们方法名字相同,而参数不同,
返回类型可以相同也可以不同。这种,我们叫做重载。
public void test(int a){
System.out.println("test2");
}
public String test(int a,String s){
System.out.println("test3");
return "returntest3";
}
而在Dart中,实现这种场景就简单的多了,因为Dart支持可选参数,可选参数又分为两种,命名可选参数和位置可选参数。
命名可选参数
命名可选参数是用花括号定义参数,如果给参数设置了默认值,则该参数就是可选的,如果调用
的时候没传入参数,则使用默认值。我们看一下代码:
main() {
String s1 = printStr(name:"李雷",score:98);
print('s1:'+s1);
String s2 = printStr2(name:"李华");//只传入一个参数即可
print('s2:'+s2);
}
String printStr({String name,int score}){
return "name is $name"+"score is $score";
}
String printStr2({String name,int score = 100}){//设置参数默认值
return "name is $name"+"score is "+score.toString();
}
位置可选参数
位置可选参数是用中括号定义参数,中括号里面的参数是可选的。我们看一下代码:
main() {
String s1 = printStr2("李华");//只传入一个参数即可
print('s1:'+s1);
}
String printStr2(String name,[int score]){//未设置默认值
if(score == null){//需要判断
return "name is $name";
}else{
return "name is $name"+"score is "+score.toString();
}
}
String printStr2(String name,[int score = 100]){//设置参数默认值
return "name is $name"+"score is "+score.toString();
}
注意,这两种可选类型有一个区别,调用的时候需要注意。命名可选参数中传递的参数无需按顺序传参,需要
用冒号对应;位置可选参数中传递的参数必须按照顺序传递。
匿名函数
匿名函数与普通函数基本一样,也有参数,方法体,只是省去了方法名而已。我们看看代码:
main() {
//匿名函数
var func = (String name,int score){
return "name is $name"+"score is "+score.toString();
};
String s1 = func("李雷",98);
print('s1:'+s1);
}
箭头函数
箭头函数实际上跟Java8的lambda表达式相似,只是一个语法糖,我自己个人不是很常使用这种写法,
不过当函数体中只包含一个语句时,再结合匿名函数使用,这种写法还是很香的。我们看下代码:
main() {
add(num x, num y) => x + y;//箭头函数,等价于下面普通方法
print(add(50,50));
var s1 = (int x,int y) => x * y;//匿名函数结合箭头函数使用
print(s1(50,50));
}
add(num x, num y){//普通方法
return x + y;
}
箭头函数更加简洁,省略了花括号,箭头后面跟着表达式。结合匿名函数形成匿名箭头函数。
今天的函数基础就到这里了。
共勉