美文网首页
dart语法之类的初始化列表、external、typedef

dart语法之类的初始化列表、external、typedef

作者: 小话001 | 来源:发表于2021-03-25 16:25 被阅读0次
    main(){
        // 可能用户调用的时候 只穿了name,而没有传age,而我又需要有一个默认的age,这种情况用到初始化列表
       var p= Person("张三");
    }
    class Person{
          final String name;
          final int age;// 注意这里我用了final修饰age,意味着后面不能修改
          //为了满足需要又默认的参数的话
         
         //  Person(this.name,{this.age=10});  //这种写法可以,只是赋值的那里是不能用表达式
         
         Person(this.name,{int age}):this.age=age??10{
         }  
    }
    

    external :其作用是,将方法的声明和方法的实现分离
    在某个地方只有方法的声明,而方法的实现由另外的关键字来实现:@patch
    方法的声明和分离的好处是:可以针对不同的平台,进行不同的实现,例如IOS 是一套方案,android是一套方案


    typedef :其作用是,修饰函数

    main(List<String> args) {
      var demo1 = demo();
      print(demo1(20, 30));
    }
    
    
    // 封装test函数, 要求: 传入一个函数
    // 普通封装一:这样不严谨,因为函数返回值不确定,传入值的类型也不确定
    // void test(Function foo) {
    //   foo("why");
    // }
    
    // 普通封装二:这样是可以的,只是阅读性差
    // void test(int foo(int num1, int num2)) {               
    //   foo(20, 30);
    // }     
    // 调用的话就得按照这个形式 ,相当于函数签名
    //   test((num1,num2)){
     //    return num1*num2
    //  }
     
    
    //最佳封装,其返回值是int,传入值也是int
    typedef Calculate = int Function(int num1, int num2);
    void test(Calculate calc) {
      calc(20, 30);
    }
    
    //补充
    //把函数作为返回值, 这里是返回了一个匿名函数
    Calculate demo() {
      return (num1, num2) {
        return num1 * num2;
      };
    }
    
    

    相关文章

      网友评论

          本文标题:dart语法之类的初始化列表、external、typedef

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