美文网首页
Dart 语言之“方法”

Dart 语言之“方法”

作者: AndyZX | 来源:发表于2020-01-14 17:11 被阅读0次

    1、一等方法对象

            方法都是对象,可以赋值给Function 变量

    /**定义一个fun 方法*/

    void fun() {

    }

    void main() {

              Function f = fun; //将fun 方法赋值给Function 变量 f ;

              f(); //直接使用Function 变量 f 执行方法;

    }

    /**定义一个fun2 方法*/

    void fun2(Function f) {}

    void main() {

    Function f2 = fun2; 

    f2(); //由于调用fun2 方法时没有传入参数,所以运行时会报错  error,jpg

    }

    error,jpg

    因此,可以使用 typedef 关键字让编译器在编译时进行检查;

    /*定义一个类型, F 类型, 这个类型其实就是一个方法, 接受两个int参数, 返回void */

    typedef void F(int i, int j);

    void fun3(F f) {

     f(1);//由于F 方法使用 typedef 定义,在传入参数与方法参数不匹配时会在编译时报错

      f(1,2); //传入对应的参数则能通过编译

    }

    2、可选位置参数 

                方法参数用[ ]括起来的就叫可选位置参数,调用时可传参数,也可不传

    /**定义一个可选位置参数方法*/

    void fun([int i, int j] ){//用[]括起来的就叫可选位置参数,调用时可传参数,也可不传

    print(i);

    print(j);

    }

    /** main 方法*/

    void main(){

     fun(1);//调用 fun 方法,传递一个参数,此时输出 1,null,没有传递的参数默认为null; 

      fun();//调用 fun 方法,不传递参数,此时输出 null,null; 

      fun(2,3); //调用 fun 方法,传递对应个数的参数,此时输出 2,3; 

    }

    注意:如果想给 j 赋值,则必须保证 i 传值,因为是可选 位置 参数

            在方法命名是可指定默认值;

    void fun([int i=1, int j=2] ){//用[]括起来的就叫可选位置参数,调用时若传递参数,则使用传递的参数值,反之使用默认参数值

    print(i);

    print(j);

    }

    /** main 方法*/

    void main(){

     fun(10);//调用 fun 方法,传递一个参数,此时输出 10,2,没有传递的参数使用默认值; 

    fun(); //调用 fun 方法,不传递参数,使用默认参数值,此时输出 1,2;

    fun(2,3); //调用 fun 方法,传递对应个数的参数,此时输出 2,3;

    }

    3、可选命名参数

            方法参数用{ }括起来的就是可选命名参数,调用时可传参数,也可不传,

             可选命名参数方法传参是不能像可选位置参数方法一样直接传值,需指定给谁传值

    /*定义一个可选命名参数方法,使用{ } */

    void fun({int i,int j }){

    }

    /** main 方法*/

    void main(){

      fun(1,2);//可选命名传参是不能像可选位置参数方法一样直接传值,需指定给谁传值,此处语法错误

      fun(i:100);//指定给i传值为100

      fun(j:200);//指定给j传值为200

      fun(i:100,j :200);//分别给i和j 传值

      fun();//不传值

    }

            可选位置参数方法不能直接给后面的参数传值,可选命名参数可以给后面的参数传值,两者都可以设置默认值 ;

            不需要像Java一样写一大堆的重载方法;

    4、默认参数值

                在定义方法是为方法内部参数提供对应参数的值,也就是为参数设置默认值的方式;

    void fun([int i=1, int j=2] ){//方法在初始话时就给参数赋值

    print(i);

    print(j);

    }

    void fun({ int i=1, int j=2 } ){//方法在初始话时就给参数赋值

    print(i);

    print(j);

    }

    5、匿名方法

    方法内可传入匿名方法,lambda 表达式,closure 闭包

    void fun2(int k,int z){

    print("cx");

    }

    Function f = fun2;

    f((int i, int j){ //方法内传入一个没有方法名的方法

    return 1;

    });

    相关文章

      网友评论

          本文标题:Dart 语言之“方法”

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