函数是可读,可维护和可重用代码的构建块。函数是一组用于执行特定任务的语句。函数将程序组织成逻辑代码块。一旦定义,可以调用函数来访问代码。这使得代码可以重用。此外,函数可以轻松读取和维护程序的代码。
1、简介
函数声明告诉编译器函数的名称,返回类型和参数。函数定义提供函数的实际主体。
(1) 函数定义
function_name(){ // 执行程序 } 或者 void function_name(){ // 执行程序 }
示例
// 函数 prints(value){ print(value); }
(2) 调用函数
必须调用函数才能执行函数代码,此过程称为函数调用。
function_name();
示例
void main(List<String> args) { // 调用函数 prints('value'); } // 函数 prints(value){ print(value); }
(3)函数返回值
函数也可以将值与控制一起返回给调用者。
return_type function_name(){};
示例
void main(List<String> args) { // 调用函数 print(sum(13, 25)); } // 有返回值的函数 int sum(int i,int j){ return i + j; }
(4)参数化函数
参数是一种将值传递给函数的机制。
function_name(data_type param_1, data_type param_2,...){}
示例
void main(List<String> args) { // 13,25 为实参 print(sum(13, 25)); } // i,j 为形参 int sum(int i,int j){ return i + j; }
2、可选参数
当函数执行时不需要强制传递参数时,可使用可选参数。通过在其名称后附加问号,可以将参数标记为可选。可选参数应设置为函数中的最后一个参数。
在Dart中有三种可选参数:
(1) 可选位置参数
要指定可选的位置参数,请使用方括号[]
。
void function_name(param1, [optional_param_1, optional_param_2]) { }
如果未传递可选参数值,则将其设置为NULL
。
示例
void main(List<String> args) { // 调用函数 print(sum(13, 25)); print(sum(13, 25,23)); } // 方法一: int sum(int i,int j,[int z]){ // 判断可选参数是否为空,为空就赋初值 if(z.toString() == "null"){ z = 0; } return i + j + z; } // 方法二: int sum(int i,int j,[int z = 0]){ return i + j + z; }
(2) 可选的命名参数
与位置参数不同,必须在传递值时指定参数名称。花括号{}
可用于指定可选的命名参数。
语法:声明函数
void function_name(a, {optional_param1, optional_param2}) { }
语法:调用函数
function_name(optional_param:value, …);
示例代码:
void main(List<String> args) { // 调用函数 print(sum(13, 25)); print(sum(13, 25,x:23,y:20)); } int sum(int i,int j,{x=0,y=0}){ return i + j + x+y; } // 打印结果: 38 81
(3) 带有默认值的可选参数
void main(List<String> args) { // 调用函数 print(sum(13, 25)); print(sum(13, 25,x:23,y:20)); } // 设置 可选参数x,y的值都为0 int sum(int i,int j,{x=0,y=0}){ return i + j + x+y; } // 打印结果: 38 81
3、递归函数
void main(List<String> args) { print(factorial(6)); } factorial(number){ if(number <= 0){ return 1; }else{ // 递归调用 return(number * factorial(number-1)); } }
4、Lambda函数
Lambda函数是表示函数的简洁机制。这些函数也称为箭头函数。
语法
[return_type]function_name(parameters)=>expression;
示例:
void main() { printMsg(); print(test()); } printMsg()=> print("hello"); int test()=>123; // 打印结果: hello 123