美文网首页
Dart函数

Dart函数

作者: 小沈新手 | 来源:发表于2021-10-08 15:38 被阅读0次

    自定义方法:

          自定义方法的基本格式:

          返回类型  方法名称(参数1,参数2,...){

            方法体

            return 返回值;

          }

    void 表示没有返回值

    void printInfo(){

      print('我是一个自定义方法');

    }

    int getNum(){

      var myNum=123;

      return myNum;

    }

    String printUserInfo(){

      return 'this is str';

    }

    定义一个带可选参数的方法

        // String printUserInfo(String username,[int age]){  //行参

        //  if(age!=null){

        //    return "姓名:$username---年龄:$age";

        //  }

        //  return "姓名:$username---年龄保密";

        // }

        // // print(printUserInfo('张三',21)); //实参

        // print(printUserInfo('张三'));

    定义一个带默认参数的方法

        // 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);

    //匿名方法

      // 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);

    }

    箭头函数,没有分号,只能有一行代码

    // list.forEach((value)=>{

        //  print(value)

        // });

    闭包:

    1.常驻内存

            2.不污染全局 

              产生了闭包,闭包可以解决这个问题..... 

              闭包: 函数嵌套函数, 内部函数会调用外部函数的变量或参数, 变量或参数不会被系统回收(不会释放内存)

            闭包的写法: 函数嵌套函数,并return 里面的函数,这样就形成了闭包。

    //闭包

      fn(){

            var a=123;  /*不会污染全局  常驻内存*/

            return(){

              a++;

              print(a);

            };       

          }   

          var b=fn();

          b();

          b();

          b();

    相关文章

      网友评论

          本文标题:Dart函数

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