• 函数相关


    创建函数

    /*
      内置方法/函数:
    
          print();
    
      自定义方法:
          自定义方法的基本格式:
    
          返回类型  方法名称(参数1,参数2,...){
            方法体
            return 返回值;
          }
    */
    
    void printInfo(){
      print('我是一个自定义方法');
    }
    
    int getNum(){
      var myNum=123;
      return myNum;
    }
    
    String printUserInfo(){
    
      return 'this is str';
    }
    
    
    List getList(){
    
      return ['111','2222','333'];
    }
    
    void main(){
    
      // print('调用系统内置的方法');
    
      // printInfo();
      // var n=getNum();
      // print(n);
    
    
      // print(printUserInfo());
    
    
      // print(getList());
    
      // print(getList());
      
    
    //演示方法的作用域
      void xxx(){
    
          aaa(){
    
              print(getList());
              print('aaa');
          }
          aaa();
      }
    
      // aaa();  错误写法 
    
      xxx();  //调用方法
    
    }
    
    
    //调用方法传参
    
    main() {
      
    
    //1、定义一个方法 求1到这个数的所有数的和      60    1+2+3+。。。+60
    
    
     /*
        int sumNum(int n){
          var sum=0;
          for(var i=1;i<=n;i++)
          {
            sum+=i;
          }
          return sum;
        } 
    
        var n1=sumNum(5);
        print(n1);
        var n2=sumNum(100);
        print(n2);
    
     */
           
    
    
    //2、定义一个方法然后打印用户信息
    
        String printUserInfo(String username,int age){  //行参
            return "姓名:$username---年龄:$age";
        }
    
        print(printUserInfo('张三',20)); //实参
    
    
    //3、定义一个带可选参数的方法
        
    
        String printUserInfo(String username,[int age]){  //行参
    
          if(age!=null){
            return "姓名:$username---年龄:$age";
          }
          return "姓名:$username---年龄保密";
    
        }
    
        // print(printUserInfo('张三',21)); //实参
    
        print(printUserInfo('张三'));
       
    
    
    
    //4、定义一个带默认参数的方法
    
    
        String printUserInfo(String username,[String sex='男',int age]){  //行参
    
          if(age!=null){
            return "姓名:$username---性别:$sex--年龄:$age";
          }
          return "姓名:$username---性别:$sex--年龄保密";
    
        }
    
        print(printUserInfo('张三'));
    
        print(printUserInfo('小李','女'));
    
        print(printUserInfo('小李','女',30));
    
    
    
    //5、定义一个命名参数的方法
    
      String printUserInfo(String username,{int age,String sex='男'}){  //行参
    
          if(age!=null){
            return "姓名:$username---性别:$sex--年龄:$age";
          }
          return "姓名:$username---性别:$sex--年龄保密";
    
      }
    
      print(printUserInfo('张三',age:20,sex:'未知'));
    
    
    
    //6、实现一个 把方法当做参数的方法
    
    
      var fn=(){
    
        print('我是一个匿名方法');
      };      
      fn();
    
      //方法
      fn1(){
        print('fn1');
      }
    
      //方法
      fn2(fn){
        
        fn();
      }
    
      //调用fn2这个方法 把fn1这个方法当做参数传入
      fn2(fn1);
    
    }
    View Code

    箭头函数和函数的调用

    void main(){
    
    /*需求:使用forEach打印下面List里面的数据*/
    
        List list=['苹果','香蕉','西瓜'];
    
    
        list.forEach((value){
          print(value);
        });
    
        list.forEach((value)=>print(value));
    
    
        list.forEach((value)=>{
          print(value)
        });
    
    /*需求:修改下面List里面的数据,让数组中大于2的值乘以2*/
    
        List list=[4,1,2,3,4];
    
        var newList=list.map((value){
    
            if(value>2){
              return value*2;
            }
            return value;
    
        });
        print(newList.toList());
    
    
       var newList=list.map((value)=>value>2?value*2:value);
    
       print(newList.toList());
    
    
    
    /*
    需求:    1、定义一个方法isEvenNumber来判断一个数是否是偶数  
             2、定义一个方法打印1-n以内的所有偶数
    */
    
    
    //定义一个方法isEvenNumber来判断一个数是否是偶数  
        bool isEvenNumber(int n){
          if(n%2==0){
            return true;
          }
          return false;
        }
    
        printNum(int n){
            for(var i=1;i<=n;i++){
                if(isEvenNumber(i)){
                  print(i);
                }
            }
        }
    
        printNum(10);
    
    
    }
    View Code

    闭包

    /*
    闭包:
    
        1、全局变量特点:    全局变量常驻内存、全局变量污染全局
        2、局部变量的特点:  不常驻内存会被垃圾机制回收、不会污染全局  
    
    
      /*  想实现的功能:
    
            1.常驻内存        
            2.不污染全局   
    
              产生了闭包,闭包可以解决这个问题.....  
    
              闭包: 函数嵌套函数, 内部函数会调用外部函数的变量或参数, 变量或参数不会被系统回收(不会释放内存)
      
                闭包的写法: 函数嵌套函数,并return 里面的函数,这样就形成了闭包。
    
        */  
    */
    
    
    /*全局变量*/
    var a=123;
    
    void main(){
    
        // print(a);
    
        // fn(){
        //   a++;
        //   print(a);
        // }
        // fn();
        // fn();
        // fn();
    
    
    
    
    //局部变量
        // printInfo(){
        //   var myNum=123;
        //   myNum++;
        //   print(myNum);
        // }
        // printInfo();
    
        // printInfo();
        // printInfo();
    
    
    
    //闭包
    
              fn(){
            var a=123;  /*不会污染全局   常驻内存*/
            return(){            
              a++;            
              print(a);
            };        
          }     
          var b=fn();    
          b();
          b();
          b();
    
          
    
    
    }
    View Code

     

    匿名函数和自执行函数

    int getNum(int n){
    
      return n;
    }
    
    
    
    void main(){
    
        
      print(getNum(12));
    
    
    
      // 匿名方法
    
      var printNum=(){
    
        print(123);
      };
    
      printNum();
    
    
    
      var printNum=(int n){
    
        print(n+2);
      };
    
      printNum(12);
    
    
    
    
    //自执行方法
    
    
        // ((int n){
        //   print(n);
        //   print('我是自执行方法');
        // })(12);
    
    
    
    //方法的递归
          var sum=1;            
          fn(n){
              sum*=n;
              if(n==1){
                return ;
              }         
              fn(n-1);
              
          }
    
          fn(5);      
          print(sum);
    
    
    
    //通过方法的递归 求1-100的和
    
        var sum=0;
        fn(int n){
    
            sum+=n;
    
            if(n==0){
              return;
            }
            fn(n-1);
        }
    
        fn(100);
        print(sum);
    
    
     
    }
    View Code
  • 相关阅读:
    第五章 运输层(UDP和TCP三次握手,四次挥手分析)
    Fluent Ribbon 第六步 StartScreen
    Fluent Ribbon 第七步 状态栏
    Fluent Ribbon 第八步 其他控件
    Avalondock 第四步 边缘停靠
    node.js开发学习一HelloWorld
    Winform应用程序实现通用遮罩层
    输入一个递增排序的数组和一个数字S,在数组中查找两个数,使得他们的和正好是S,如果有多对数字的和等于S,输出两个数的乘积最小的
    Navicat连接MySQL8+时出现2059报错
    win10安装MySql教程
  • 原文地址:https://www.cnblogs.com/jiefangzhe/p/13549676.html
Copyright © 2020-2023  润新知