一、集合遍历

1、map

void main() {
    List mapList = [1, 3, 5];
    // List newMapList = List.empty(growable: true); // 空列表
    // for (var i = 0; i < mapList.length; i++) {
    //   newMapList.add(mapList[i] * 2);
    // }
    // print(newMapList);
    var newMapList = mapList.map((value) {
        return value * 2;
    });
    print(newMapList);
    print(newMapList.toList());
}

2、where

void main() {
    List whereList = [1, 3, 4, 5, 7, 8, 9];
    var newWhereList = whereList.where((value) {
        return value > 5;
    });
    print(newWhereList.toList());
}

3、any

void main() {
    List anyList = [1, 3, 4, 5, 7, 8, 9];
    var result = anyList.any((value) {
        // 只要集合里面有满足条件就返回true
        return value > 5;
    });
    print(result); // true
}

4、every

void main() {
    List everyList = [1, 3, 4, 5, 7, 8, 9];
    var result = everyList.every((value) {
        // 每一个都满足条件返回 true,否则返回 false
        return value > 5;
    });
    print(result);
}

二、函数

Dart 是一种真正面向对象的语言,所以即便函数也是对象并且类型为 Function。

  • 内置方法/函数:print();

  • 自定义函数/方法:

    语法格式:

    返回类型 方法名称 (参数1, 参数2, ...) {
        方法体/函数体;
        return 返回值;
    }
    

1、定义函数

void main() {
    print('调用系统内置的方法');
}

入口函数外定义方法

void printInfo() {
    print('我是一个自定义方法');
}

void main() {
    printInfo();
}

定义方法有返回值,且指定返回值的类型为 int

void main() {
    int getNum() {
        var myNum = 85;
        return myNum;
    }

    var result = getNum();
    print(result);
}

指定方法的返回值为 String 类型

String printUserInfo() {
    return 'this is str';
}

void main() {
    print(printUserInfo());
}

指定方法的返回值为 List 类型

List getList() {
    return ['111', '222', '333'];
}

void main() {
    print(getList());
}

注意:

  • 在 Dart 中,类型是可选,可以省略显示的类型,但仍然建议显示指定类型。
  • 函数也是对象,所有函数都有返回值。当没有指定返回值的时候,函数会返回 null。如果强制用 void 来修饰函数,则函数真的没有返回值。

2、函数作用域

List getList() {
    return ['111', '222', '333'];
}

void main() {
    void xxx() {
        aaa() {
            print(getList());
            print('aaa');
        }
        aaa();
    }
    xxx();
    // aaa(); // 错误写法
}

3、函数的参数

函数可以有两种形式的参数:必要参数可选参数。必要参数定义在参数列表前面,可选参数定义在必要参数后面。可选参数可以是 命名的位置的

注意:

某些 API(特别是 Flutter 控件的构造器)只使用命名参数,即使参数是强制性的。

向函数传入参数或者定义函数参数时,可以使用 尾逗号

3.1 函数传参

以求和为例,每次修改的都是 i 的取值范围,其他操作都是一样的:

main() {
 // 1-10 的数字和
 var sumA = 0;
 for (var i = 1; i <= 10; i++) {
     sumA += i;
 }
 print(sumA);

 // 1-100 的数字和
 var sumB = 0;
 for (var i = 1; i <= 100; i++) {
     sumB += i;
 }
 print(sumB);
}

像这样重复性的操作就可以封装成方法

main() {
    // 传入一个数字,求 1 到这个数的所有数字和
    int sumNum(int num) {
        // 约束传入变量的类型为 int
        var sum = 0;
        for (var i = 1; i <= num; i++) {
            sum += i;
        }
        return sum;
    }

    print(sumNum(10));
    print(sumNum(100));
}

定义一个函数打印用户信息

main() {
    String printUserInfo(String username, int age) { // 形参
        return "姓名:$username---年龄:$age";
    }

    print(printUserInfo('Cherry', 16)); // 实参
}
Logo

腾讯云面向开发者汇聚海量精品云计算使用和开发经验,营造开放的云计算技术生态圈。

更多推荐