function - ShenYj/ShenYj.github.io GitHub Wiki

Function

  • Dart 定义函数时,形参的类型是可以省略的,但是建议明确形参类型

    bool test(int number) {
        return number == 1;
    }
    
    /// 省略形参的类型
    bool test(number) {
        return number == 1;
    }
  • 对于仅包含一个表达式的函数,您可以使用 => expr语法

    bool test(int number) => number == 1;

    => expr语法是 { return expr; }的缩写。 =>符号有时被称为箭头语法。

  • 为形参提供默认值

    /// Sets the [bold] and [hidden] flags ...
    void enableFlags({bool bold = false, bool hidden = false}) {...}
  • 可选参数

    /// Sets the [bold] and [hidden] flags ...
    void enableFlags({bool? bold, bool? hidden}) {...}
    
    
    enableFlags(bold: true, hidden: false);
    enableFlags(bold: true); /// hidden 为 null
    enableFlags();           /// bold 和 hidden 为 null

    如果调用时不传参,默认就是 null

  • 必传参数

    如果希望命名参数是强制性的,要求调用者为参数提供值,可以使用 required 关键字

    const Scrollbar({super.key, required Widget child});
  • 匿名参数

    void test(String name, {int age, String sex = '男'});
    
    test('张三',age: 20, sex: '未知');
  • 匿名函数

    var printNum = (int n){ ... };
    printNum();
  • 自执行函数

    /// 带有一次参数
    ((int n){
        print('自执行函数');
    })();
    /// 无参数
    ((){
        print('自执行函数');
    })();
  • 闭包

    func() {
        var a = 123;
        return (){
            a++;
            print(a);
        };
    }
    
    var b = func();
    b();    /// 124
    b();    /// 125
    b();    /// 126

参考资料: Dart: Functions

⚠️ **GitHub.com Fallback** ⚠️