美文网首页
Dart基本语法学习四

Dart基本语法学习四

作者: beyond峰 | 来源:发表于2018-11-11 17:00 被阅读7次

    方法

    方法定义

    返回值类型  方法名 (参数1,参数2,......){
        方法体...
        return 返回值;
    }
    

    方法特性

    • 方法也是对象,并且有具体类型Function
    • 返回值类型、参数类型都可省略
    • 箭头语法:=>expr 是{return expr;}缩写,只适用于一个表达式。
    • 方法都有返回值。如果没有指定,默认 return null 最后一句执行
    void main(){
    printPerson("张三",18);
    print(personName("李四",20));
    }
    //
    void printPerson(String name,int age){
      print("$name+$age");
    }
    //printPerson()等同于下边
    //
    printPerson(name,age){
    print("$name+$age");
    }
    //箭头语法
    personName(String name,int age) =>"$name+$age";
    

    可选参数

    • 可选命名参数:{param1,param2,......}
    • 可选位置参数:[param1,param2,......]
    • 如果存在具体参数,可选参数声明,必须在参数后面
    void printPer(String name,{int age,String gender}){
      print("name = $name,aget = $age,gender = $gender");
    }
    void printPer2(String name,[int age,String gender]){
      print("name = $name,aget = $age,gender = $gender");
    }
    

    默认参数

    • 使用 = 在可选参数指定默认值
    • 默认值只能是编译时常量
    void printPer(String name,{int age = 30,String gender = "Female"}){
      print("name = $name,aget = $age,gender = $gender");
    }
    

    方法对象

    • 方法可作为对象赋值给其他变量
    • 方法可作为参数传递给其他方法
    void main(){
      var func = printPerson;
      func();
    }
    void printPerson(){
      print("张三");
    }
    //打印 张三
    
    void main(){
      var list = ["h","e","l","l","o"];
      print(printList(list, printStr));
    }
    List printList(List list, String f(elment)){
      for (var i = 0;i<list.length;i++){
        list[i] = f(list[i]);
      }
      return list;
    }
    String printStr(str){
      return str * 3;//str 复制3次;
    }
    

    匿名方法

    (参数1,参数2){
        方法体...
        return 返回值
    }
    
    • 可以赋值给变量,通过变量进行调用
    • 可在其他方法中直接调用或传递给其他方法
      print(printList(list, (str){return str*3;}));//同上,字符串复制3次;
    

    闭包

    • 闭包是一个方法(对象)
    • 闭包定义在其他方法内部
    • 闭包能够访问外部方法内的局部变量,并持有其状态
    void main(){
    
      var func = a();
      func();
      func();
      func();
      func();
    }
    a(){
      int count =0;
      printCount(){
        print(count++);
      }
      return printCount;
    }
    // 0
    // 1
    // 2
    // 3
    

    相关文章

      网友评论

          本文标题:Dart基本语法学习四

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