Dart语言程序设计基础
函数
函数是一组一起执行的一个任务语句,它既可以封装在编程语言的标准库中,也可以根据一个特定的任务自定义,每一个Dart程序都至少有一个函数,即主函数main().
函数也称为方法或子列程、子程序。
函数的声明
返回值类型 函数名称(参数列表){
函数体;
return 返回值;
}//函数名首字母一般小写
//若返回值类型为void则不需要return返回值
当一些功能需要在程序代码中重复时,我们就可以将这些重复的代码包装在一起。
函数包括系统函数和自定义函数
1.系统函数——由编程语言的标准库提供,开发者可以随便使用(必须符合使用规则)
2.自定义函数——程序员根据自己的编程需要,定义可供多次调用的功能模块
实参:实际参数值,具体的值。
形参:形式参数值
形参和实参参数类型要保持一致
函数的使用
Dart语言中的函数分为无参函数和有参函数,有参函数中的参数又可细分为可选参数和必选参数。
在进行声明定义时,必选参数放在参数列表最前面,可选参数放在必选参数的后面。
可选参数
可选参数可以是命名参数或位置参数,两种都可以在声明定义时指定默认值,如果没有指定默认值,则默认值为null,但是这两种参数不能同时作为可选参数。
1.可选的命名参数——有参默认值
依据参数名对应实参。
声明定义方法:{参数名1=默认值,参数名2=默认值,…}
调用方法:“参数名:值”
/*声明函数*/
void printBoot({bool flag, bool action}){
print("flag:" + flag.toString() + "action:" + action.toString());
}
/*调用函数*/
printBoot(); //没有指定实参
printBoot(flag: true); //指定一个实参flag
printBoot(action: true); //指定一个实参action
printBoot(flag: true, action: true);//指定两个实参flag和action
2.可选的位置参数——无参数默认值
依据参数位置对应实参。
声明定义方法:[参数名1,参数名2,…]
调用方法:“值”
/*声明函数*/
String printMsg(String msg, [String time]){
if(time != null){
return msg + 'at' + time;
}
return msg;
}
/*调用参数*/
print(printMsg("my"); //没有指定可选参数
print(printMsg("my", )); //指定了可选参数的实参值,但使用系统默认值null
print(printMsg("my", '12:30'));//指定可选参数的实参值为 12:30
其他函数
1.匿名函数
没有名称只有函数体,有函数参数。
匿名函数一定要放在某个应用程序内,在外没有函数名会报错。
var adds = (x,y){
print(x,y);
};
adds(30,50);
2.箭头函数
var adds((x,y) =>print(x+y);
adds(30,50);
int max2(int a, int b){
int result = a>b?a:b;
return result;
}
//箭头函数
int max2(int a, int b) => a>b ? a:b;
//匿名函数和箭头函数
var f = (double a, double b){
return a+b;
}(11,25);
var f1 = (double a, double b) => a+b;
print(f);
print(f1(11,25));
3.闭包
当函数定义和函数表达式位于另一个函数的函数体内时,称此函数为闭包,且内部函数可以访问它所在的外部函数中所有的变量、参数、内部函数。
(1)内部函数为有参数的匿名函数
/*声明函数*/
Function test(){
const PI = 3.14;
return (double r) => r*r*PI;
}
/*调用函数*/
void main(){
var result = test();
print(result(2.0));//结果为:12.56
}
(2)内部函数为无参数的匿名函数
/*声明函数*/
Function test(){
const PI = 3.14;
return () => PI;
}
/*调用函数*/
void main(){
var result = test();
print(result());//结果为:3.14
}