美文网首页
Dart简介2--函数

Dart简介2--函数

作者: 逃离_102 | 来源:发表于2022-09-21 21:52 被阅读0次

    说明

    Dart是一种真正的面向对象的语言,所以即使是函数也是对象,并且有一个类型Function。这意味着函数可以赋值给变量或作为参数传递给其他函数,这是函数式编程的典型特征。下面就简单介绍一下。

    1. 函数声明

    Dart函数声明如果没有显式声明返回值类型时会默认当做dynamic处理,注意,函数返回值没有类型推断。示例如下:

    //函数声明bool
    bool callBack();
    
    //不指定返回类型,此时默认为dynamic,不是bool
    isNoble(int atomicNumber) {
      return _nobleGases[atomicNumber] != null;
    }
    
    void test(callBack cb){
       print(cb()); 
    }
    //报错,isNoble不是bool类型
    test(isNoble);
    
    //对于只包含一个表达式的函数,可以使用简写语法
    bool isNoble (int atomicNumber)=> true ;
    

    2. 函数作为变量

    因为函数也是对象,所以可当变量使用,示例如下:

    var say = (str){
      print(str);
    };
    say("hi world");
    

    3. 函数作为参数传递

    因为函数也是对象,所以作为参数传递,示例如下:

    void execute(var callback) {
        callback();
    }
    execute(() => print("xxx"))
    

    4. 函数参数:可选的位置参数,可选的命名参数

    可选的位置参数:包装一组函数参数,用[]标记为可选的位置参数,并放在参数列表的最后面。

    String say(String from, String msg, [String? device]) {
      var result = '$from says $msg';
      if (device != null) {
        result = '$result with a $device';
      }
      return result;
    }
    
    say('Bob', 'Howdy'); //结果是: Bob says Howdy
    
    say('Bob', 'Howdy', 'smoke signal'); //结果是:Bob says Howdy with a smoke signal
    

    可选的命名参数:定义函数时,使用{param1, param2, …},放在参数列表的最后面,用于指定命名参数。

    //设置[bold]和[hidden]标志
    void enableFlags({bool bold, bool hidden}) {
        // ... 
    }
    
    enableFlags(bold: true, hidden: false);
    

    注意,不能同时使用可选的位置参数和可选的命名参数

    先就写这么多,下面就得边学习边总结,有什么不对的地方,欢迎留言讨论,谢谢!

    相关文章

      网友评论

          本文标题:Dart简介2--函数

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