Flutter笔记之Dart函数

在Dart中函数也是对象,属于Function类型,特可以被分配给变量或做为参数进行传递。

1、简单的函数

Dart中函数的定义

/**
 * 返回值  方法名  (参数,参数){
 *       方法体
 *       返回值
 *       return XXX;
 * }
**/

以下举个例子来说明

/**
 * 没有返回值的function
 */
void printName(String name){
  printName("name=$name");
}

上边是个简单的没有返回值,参数类型是String类型的函数,我们也可以省略返回值,和参数的类型修饰比如

/**
 * 省略返回值和参数描述
 */
printNames(name){
  printName("name=$name");
}

接下来我们在定义一个有返回值的函数

/**
 * 带有返回值的function
 */
String getName(String name){
  return "name:$name";
}

我们还可以简写为:

/**
 * 用=>简写方法
 */

String getNames(String name)=> "names==$name";

2、可选参数函数

在函数定义的时候用{param,param,}或者[param,param,]
这两种可选参数函数,在调用上是有区别的例如:

/**
 * 可选参数function
 * 参数 name是必传参数,age,和sex随意
 */

void printInfo(String name,{int age,bool sex}){

  print("name=$name,age=$age,sex=$sex");
}

/**
 * 可选位置参数function
 */
void printBookInfo(String bookName,[double price, String  auth]){
  print("bookName=$bookName,price=$price,auth=$auth");
}


函数调用时候

 printInfo("tom",age: 10,sex: true);

  printBookInfo("钢铁是怎么样练成的",38.88,"你猜");

发现以{}形式定义的函数必须的写上 可变参数的key,而以[] 定义的函数就不需要,只需要按照位置以此填写。

可变参数还可以定义可变参数的默认值,调用时候不传值的话就是默认值比如:

/**
 * 可选参数function
 * 参数 name是必传参数,age,和sex随意
 */

void printInfo(String name,{int age=10,bool sex=false}){

  print("name=$name,age=$age,sex=$sex");
}


/**
 * 可选位置参数function
 */
void printBookInfo(String bookName,[double price=30.09, String  auth="尼古拉·阿列克谢耶维奇·奥斯特洛夫斯基"]){
  print("bookName=$bookName,price=$price,auth=$auth");
}

3、匿名函数

没有名字的函数称之为匿名函数,看下怎么定义和调用

//匿名函数

  var fun=(){
    print("我是匿名函数");
  };
  fun();
第二种调用方法:

  ((){print("匿名函数自己调用");})();

4、闭包

个人浅解,闭包是方法中的方法,能够方便的访问到外部资源,接下看下怎么定义和调用

Function getFunction_Name(){
  var name="张三";
  return (){ return name;};
}
//  调用:
 var f=getFunction_Name();
  print(f());  // 张三

5、函数作为函数的参数传递

/**
 * 打印10年后学生的信息
 */
void consoleStudentInfo(String name,Function getAge){
  var  age=getAge(10);
  print("name=$name,age=$age");
}

int getAge(int age){
  return age+10;
}

调用
  consoleStudentInfo("zhangSan", getAge);
发布了100 篇原创文章 · 获赞 75 · 访问量 8万+

猜你喜欢

转载自blog.csdn.net/baidu_31956557/article/details/102759854