Dart10函数

1.可选的位置参数

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

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

2.可选的命名参数

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

声明函数

void function_name(a, {optional_param1, optional_param2}) { }

调用函数

function_name(optional_param:value, …);

示例

void main() { 
   test_param(123); 
   test_param(123,s1:'hello'); 
   test_param(123,s2:'hello',s1:'world'); 
}  
test_param(n1,{s1,s2}) { 
   print(n1); 
   print(s1); 
}

执行上面示例代码,得到以下结果:

123 
null 
123 
hello 
123 
world

3.带有默认值的可选参数

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

function_name(param1,{param2= default_value}) { 
   //...... 
}

示例

void main() { 
   test_param(123); 
}  
void test_param(n1,{s1:12}) { 
   print(n1); 
   print(s1); 
}

执行上面示例代码,得到以下结果:

123 
12

注 - 函数中的所有必需参数必须在可选参数之前

4.匿名函数

创建没有名字的函数,这种函数被称为 匿名函数

([[Type] param1[, …]]) {   codeBlock; }; 

下面例子中定义了一个包含一个无类型参数 item 的匿名函数。 list 中的每个元素都会调用这个函数,打印元素位置和值的字符串。

void main() {
  var list = ['apples', 'bananas', 'oranges'];
  list.forEach((item) {
    print('${list.indexOf(item)}: $item');
  });
}

如果函数只有一条语句, 可以使用箭头简写。

list.forEach((item) => print('${list.indexOf(item)}: $item'));

5.箭头函数

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

[return_type]function_name(parameters)=>expression;

示例

void main() { 
   printMsg(); 
   print(test()); 
}  
printMsg()=>
print("hello"); 

int test()=>123;                       
// returning function

执行上面示例代码,得到以下结果:

hello 123