Dart-函数

  目录

函数是可读,可维护和可重用代码的构建块。函数是一组用于执行特定任务的语句。函数将程序组织成逻辑代码块。一旦定义,就可以调用函数来访问代码。这使得代码可以重用。此外,函数可以轻松读取和维护程序的代码。

函数声明告诉编译器函数的名称,返回类型和参数。函数定义提供函数的实际主体。
 

定义函数

函数定义指定特定任务的执行方式和方式。在使用函数之前,必须先定义它。定义标准函数的语法如下:

function_name() {  
   //statements      
}

void function_name() {
   //statements
}

void 关键字表明函数没有任何值返回给调用者。

test() {
  //function definition
  print("function called");
}

 

函数调用

必须调用函数才能执行它。此过程称为 函数调用 。

语法
function_name()

以下示例说明了如何调用函数:

void main() {
 test();
}  
test() {
 //function definition
 print("function called");
}

它将产生以下输出:

function called

 

返回函数

函数也可以将值与控件一起返回给调用者。这些函数称为 返回函数 。

语法
return_type function_name(){  
   //statements  
   return value;  
}

1)该 return_type 可以是任何有效的数据类型。
2)在return语句是可选的,没有指定函数则返回null
3)返回值的数据类型必须与函数的返回类型匹配。
4)函数最多可以返回一个值。换句话说,每个函数只能有一个return语句。

让我们举个例子来了解 返回函数的 工作原理:
1)该示例声明了一个函数 test() ,函数的返回类型是字符串。
2)该函数返回一个字符串值给调用者。这是通过return语句实现的。
3)函数 test() 返回一个字符串。这显示为输出。

void main() {
 print(test());
}  
String test() {
 // function definition
 return "hello world";
}

它将产生以下输出:

hello world

 

函数参数

当函数执行时不需要强制传递参数时,可以使用可选参数。通过在其名称后 附加问号,可以将参数标记为可选。可选参数应设置为函数中的 最后一个参数。
 

函数可选位置参数

要指定可选的位置参数,请使用[]括号。

语法
void function_name(param1, [optional_param_1, optional_param_2]) { }

如果可选参数未传递值,则将其设置为NULL。

void main() {
 test_param(123);
}  
test_param(n1,[s1]) {
 print(n1);
 print(s1);
}

它应该产生以下输出

123
null

 

函数可选命名参数

与位置参数不同,必须在传递值时指定参数名称。{}可用于指定可选的命名参数。

语法 - 声明函数
void function_name(a, {optional_param1, optional_param2}) { }
语法 - 调用函数
function_name(optional_param:value,);
void main() {
  namedAndOptionalParameters("123");
  namedAndOptionalParameters("parameter_n1", s1: "parameter_s1");
  namedAndOptionalParameters("parameter_n1", s1: "parameter_s1", s2: "parameter_s2");
}  

void namedAndOptionalParameters(n1,{s1,s2}){
  print("n1:${(n1)}, s1:${(s1)}, s2:${(s2)}");
}

它应该产生以下输出:

n1:123, s1:null, s2:null
n1:parameter_n1, s1:parameter_s1, s2:null
n1:parameter_n1, s1:parameter_s1, s2:parameter_s2

 

函数带有默认值的可选参数

默认情况下,还可以为函数参数指定值。但是,这些参数也可以显式传递值。

语法
function_name(param1,{param2= default_value}) {
   //......
}
void main() {
  defaultValueOptional(5);
  defaultValueOptional(5, s1: 15);
} 

void defaultValueOptional(p1,{s1:10}){
  print("p1:${(p1)}, s1:${(s1)}");
}

它应该返回以下输出:

p1:5, s1:10
p1:5, s1:15

 

递归

递归是一种通过对函数自身重复调用直到它到达结果来迭代操作的技术。当您需要使用循环内的不同参数重复调用相同的函数时,最好应用递归。

void main() {
  factorial(6);
} 

int factorial(number) {
  print("number:${(number)}");
  if(number <= 0){
    return 1;
  }else {
    int result = number * factorial(number - 1);
    print("number:${(number)}, result: ${(result)}");
    return result;
  }
}

输出结果

number:6
number:5
number:4
number:3
number:2
number:1
number:0
number:1, result: 1
number:2, result: 2
number:3, result: 6
number:4, result: 24
number:5, result: 120
number:6, result: 720

 

Lambda函数

Lambda函数是表示函数的简明机制,这些函数也称为箭头函数

语法
[return_type]function_name(parameters)=>expression;
  var fruitsList = ['apples', 'bananas', 'oranges'];
  fruitsList.forEach((element) => print("${(fruitsList.indexOf(element))} - ${(element)}"));

输出

0 - apples
1 - bananas
2 - oranges

 

闭包

1)闭包是一个方法(对象)
2)闭包定义在其他方法内部
3)闭包能够访问外部方法内的局部变量,并持有其状态(这是闭包最大的作用,可以通过闭包的方式,将其暴露出去,提供给外部访问)

void anonymousFunction() {
  var add2 = makeAdder(2, 'aaa');
  var add4 = makeAdder(4, 'bbb');
  print(add2(3)); // 5 aaa
  print(add4(3)); // 7 bbb
}

Function makeAdder(int addBy, String name) {
  return (int i) => '${addBy + i} $name';
}

输出

5 aaa
7 bbb
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值