美文网首页
Dart笔记(二)函数

Dart笔记(二)函数

作者: 啦啦哇哈哈 | 来源:发表于2019-05-19 20:18 被阅读0次

    方法也是对象,Function
    返回值类型、参数类型可省略
    箭头语法: = > expr 也就是{return expr} 只适用于一个表达式,方法都有返回值,如果没有指定则默认return null

    • 可选参数(可选命名参数,可选位置参数)
    //可选命名参数
    //用的大括号
    //大括号中俩参数是可以不传入的
    //传的时候指定参数名对应传入
    printPerson(String name, {int age, String gender}){
        print("name = $name, age = $age, gender = $gender");
    }
    //可选位置参数
    //用的中括号
    //传的时候是按位置传的
    printPerson2(String name, [int age, String gender]){
        print("name = $name, age = $age, gender = $gender");
    }
    void main(){
        printPerson("zhang");
        printPerson("zhang",age:20)
        printPerson("zhang",gender:"Male");
        printPerson2("zhang");
        printPerson2("zhang",20)
        printPerson2("zhang",20,"Male");
    
    }
    

    注意的是,普通参数一定在可选参数前面

    • 默认参数值(基于可选参数,值只能是编译期常量)
    • 方法对象Function
      1.可以作为对象赋值给另一个Function变量
    void main(){
        var func = printHello;//Function func = printHello
        func();//调用时候只需要加个括号就可以!
    }
    
    void printHello(){
        print("Hello");
    }
    

    2.可以作为参数传递给其他方法

    void main(){
        var list2 = ["h","e","l"];
        pirnt(listTimes(list2, times));
    }
    
    List listTimes(List list, String times(str)){
        for(var index = 0; index < list.length; index++){
            list[index] = times(list[index]);
        }
        return list;
    }
    
    String times(str){
        return str * 3;
    }
    
    • 匿名方法 参数列表 + 方法体
        (参数1, 参数2, ....){
            方法体...
            return 返回值
        }
    

    1.可以赋值给一个变量,通过变量进行调用
    一个极端的例子。

        void main(){
            var func = (str){
                print("Hello --- $str");
            };
            func(30);
            ((){
                print("Test");
            }).();
        }
    

    2.可以在其它方法中直接调用或者传递给其他方法
    上面那个times例子就可以改成

        print(listTimes(list2, (str){return str * 3}));
    

    相关文章

      网友评论

          本文标题:Dart笔记(二)函数

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