Dart-方法

作者: 哎呀啊噢 | 来源:发表于2019-07-27 16:59 被阅读3次
    • 方法的定义
    • 可选参数
    • 默认参数
    • 方法对象
    • 匿名方法
    • 闭包
    1. 方法的定义
    • 方法定义:返回类型 方法名(参数1、参数2){方法体...return 返回值}
    • 方法也是对象,并且有具体的类型Function
    • 返回类型、参数类型都可以省略
    • 箭头语法=> expro 是{return expr}缩写,只适用于一个表达式
    • 方法都有返回值,如果没有制定,默认null最后一句执行
    代码示例
    //定义方法
    String personFun(String name,int age){
      return "name:$name,age:$age";
    }
    
    //定义方法 返回类型 参数类型都可以省略
     personFun1(name,age){
      return "name:$name,age:$age";
    }
    
    //方法调用
    void main(){
    personFun('test',10);
    }
    
    2、可选参数
    • 可选命名参数{param1,param2...}需要定制名称
    • 可选位置参数[param1,param2...]位置不能换,如果未传,默认值为null
    • 如果存在具体参数,可选参数的声明,必须在参数后边
    示例代码
    //可选参数 ---可选命名参数
    const age = 10;
    
    void optionParamFun(String name,{int age = age,String gender : "默认值"}){
    
      print("name:$name,age:$age,gender:$gender");
    
    }
    
    
    //可选位置参数
    void optionParamFun1(String name,[int age,String gender]){
    
      print("name:$name,age:$age,gender:$gender");
    
    }
    
    //调用
    void main(){
      optionParamFun("dart");//name:dart,age:10,gender:默认值
      optionParamFun1("dart",12,"ha");//name:dart,age:12,gender:ha
    }
    
    
    3、默认参数
    • 使用 = 、: 在可选参数制定默认值
    • 默认参数值只能是编译期常量
    • 以传入的参数值为准
    4、方法对象
    • 方法可作为对象赋值给其他变量
    • 方法可作为参数传递给其他方法
    示例代码
    //方法作为对象赋值给其他对象
    printHello(){
      print("say hello");
    }
    
    //方法作为参数传递给其他方法:forEach(print);
    String testStr(str){
      return str*3;
    }
    
    List listFun(List list,String testStr(str)){
      for(var i = 0;i < list.length;i++){
        list[i] = testStr(list[i]);
      }
      return list;
    }
    
    //调用
    void main(){
    var func = printHello;
    func();//say hello
    
    var list = ["1","2","3"];
    print(listFun(list, testStr));//[111, 222, 333]
    }
    
    
    5、匿名方法
    • 定义:(参数1,参数2){方法体....return 返回值}
    • 可赋值给变量,通过变量进行调用
    • 可在其他方法中直接进行调用或者传递给其他方法
    代码示例
    void main(){
      //匿名方法
      var func1 = (age){
        print("say hello $age");
      };
     func1(20);//say hello 20
    }
    
    6、闭包
    • 闭包是一个方法
      闭包就是能够读取其他函数内部变量的函数。在本质上,闭包是将函数内部和函数外部连接起来的桥梁。

    • 闭包定义在其他方法内部

    • 闭包能够访问外部方法内的局部变量,并持有其状态

    代码示例
    //闭包
    Function makeAdder(num addBy){
       Function sumFun = (num i){
         return addBy + i;
       };
       return sumFun;
    }
    
    void main(){
      //闭包
      var add2 = makeAdder(2);
      print(add2(4));//6
    
    
    }
    

    相关文章

      网友评论

        本文标题:Dart-方法

        本文链接:https://www.haomeiwen.com/subject/gamerctx.html