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
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

LuoYaNiiii

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值