Function

文字描述:

dart Function - 图1
dart Function - 图2
dart Function - 图3

所以这里 可以直接写 getPerson(name, age)

  1. void main(){
  2. var myData = getPerson('dwh', 19);
  3. print(myData);
  4. }
  5. getPerson(String name, int age){
  6. return "myName is $name, age is $age";
  7. }
  8. //myName is dwh, age is 19

箭头语法

  1. void main(){
  2. var myData = getPerson('dwh', 19);
  3. print(myData);
  4. }
  5. getPerson(name, age) => "myName is $name, age is $age";
  6. //myName is dwh, age is 19

这两个函数其实是等同的

可选参数

根据名称定义变量

定义可选参数

使用 {pa1,pa2…} 这是根据名称来调用
必选参数必选写在可选参数的前面

  1. void main(){
  2. var myData = getPerson('dwh');
  3. print(myData);
  4. }
  5. getPerson(name, {age, gender}){
  6. return "myName is $name, age is $age, gender is $gender";
  7. }
  8. //后面两个是可选参数,第一个是必选
  9. //myName is dwh, age is null, gender is null

调用可选参数

使用 :

  1. void main(){
  2. var myData = getPerson('dwh', age: 19, gender: '男');
  3. print(myData);
  4. }
  5. getPerson(name, {age, gender}){
  6. return "myName is $name, age is $age, gender is $gender";
  7. }
  8. //myName is dwh, age is 19, gender is 男

根据位置定义变量

  1. void main(){
  2. var myData = getPerson('dwh', 18);
  3. print(myData);
  4. }
  5. getPerson(name, [age, gender]){
  6. return "myName is $name, age is $age, gender is $gender";
  7. }
  8. //其中name是必选 之后两个可选 但是调用的时候需要按照位置来,
  9. //myName is dwh, age is 18, gender is null

默认参数值

  1. void main(){
  2. var myData = getPerson('dwh', 18);
  3. print(myData);
  4. }
  5. getPerson(name, [age, gender = '男']){
  6. return "myName is $name, age is $age, gender is $gender";
  7. }
  8. //其中name是必选 之后两个可选 但是调用的时候需要按照位置来,
  9. //myName is dwh, age is 18, gender is 男

方法可以作为变量调用

比如forEach就是

  1. void main(){
  2. var list = ['h', 'i'];
  3. var myData = listTimes(list, times);
  4. print(myData);
  5. }
  6. listTimes(List list, time3(str)){
  7. for(var index = 0; index < list.length; index++){
  8. list[index] = time3(list[index]);
  9. }
  10. return list;
  11. }
  12. times(str) => str*3;
  13. //[hhh, iii]

匿名方法

描述

dart Function - 图4

特性

1、可以赋值给变量,通过变量进行调用
2、可以在其他方法中直接调用,或传递给其他方法

栗子

  1. void main(){
  2. ((){
  3. print('这是一个匿名方法,后面的括号直接调用,但是不建议这样用');
  4. }) ();
  5. }
  6. //这是一个匿名方法,后面的括号直接调用,但是不建议这样用
  1. void main(){
  2. var func1 = (str){
  3. print('hi--$str');
  4. };
  5. func1('ncuhomers');
  6. }
  7. //hi--ncuhomers
  1. void main(){
  2. var list = ['h', 'i', '6'];
  3. var myData = listTimes(list, (str){return str * 3;});//直接传入一个匿名方法
  4. print(myData);
  5. }
  6. listTimes(List list, func(str)){
  7. for(var index = 0; index < list.length; index++){
  8. list[index] = func(list[index]);
  9. }
  10. return list;
  11. }
  12. //[hhh, iii, 666]

闭包

描述

闭包是一个方法(对象)
闭包定义在其他方法的内部
闭包能够访问外部方法的局部变量