美文网首页
dart快速入门教程 (5)

dart快速入门教程 (5)

作者: 螺钉课堂 | 来源:发表于2019-12-23 10:32 被阅读0次

    5.函数

    #5.1.函数定义

    语法:

    返回值类型 函数名(参数类型 参数1, 参数类型 参数2,...) {
      // 函数体
      return ‘返回值’
    }
    
    

    举例:

    void main() {
      print(sum(10, 20));
    }
    
    num sum(int a, int b) {
      return a + b;
    }
    
    

    参数类型是可以省略的

    void main() {
      print(sum(10, 20));
    }
    
    sum(a, b) {
      return a + b;
    }
    
    

    如果没有指定返回值,默认返回null

    void main() {
      print(sum(10, 20));
    }
    
    sum(a, b) {
      print(a + b);
    }
    
    

    支持箭头函数

    void main() {
      var fn = (a, b) =>  a + b ;
      print(fn(10, 20));
    }
    
    

    #5.2.可选参数

    1.可选命名参数

    void main() {
      // 通过设置age这样的前缀来和可选参数对应,意味着如果三个参数都传的话 age和gender的位置是可以换的  例如这样:person('小强',gender: '男', age: 18)
      print(person('小强', age: 18));
    }
    
    String person(String name, {int age, String gender}) {
      return '${name} - ${age} - ${gender}';
    }
    
    

    2.可选位置参数

    位置参数的形参和实参是通过位置来一一对应的

    void main() {
      // 注意位置不能调换
      print(person('小强', 18, '男'));
    }
    
    String person(String name, [int age, String gender]) {
      return '${name} - ${age} - ${gender}';
    }
    
    

    #5.3.参数默认值

    void main() {
      // 没有传入gender 使用默认值
      print(person('小强',age: 18));
    }
    
    String person(String name , {int age, String gender = '男'}) {
      return '${name} - ${age} - ${gender}';
    }
    
    

    #5.4.函数参数

    void main() {
      print(printPerson(person));
    }
    
    String person(String name , {int age}) {
      return '${name} - ${age}';
    }
    
    String printPerson (String fn(String name , {int age})) {
    
      String name1 = 'xiaoqiang';
      int age = 18;
      return fn(name1, age: 18);
    }
    
    

    #5.5.匿名函数

    void main() {
      String str1 = printPerson((String name, {int age}){return '${name} - ${age}';});
      print(str1);
    }
    
    String person(String name , {int age}) {
      return '${name} - ${age}';
    }
    
    String printPerson (String fn(String name , {int age})) {
    
      String name1 = 'xiaoqiang';
      int age = 18;
      return fn(name1, age: 18);
    }
    
    
    void main() {
      var fn = (String name, int age) {
        return '${name} - ${age}';
      }; 
      print( fn('xiaoqiang', 20));
    }
    
    
    void main() {
      // 匿名函数自执行
      var s = ((String name, int age) {
        return '${name} - ${age}';
      })('xiaoqiang', 30);
      print(s);
    }
    
    

    #5.6.闭包

    闭包的形式就是函数中套函数,作用是可以通过闭包把函数中的私有变量暴露出去

    void main() {
      var f = fn();
      f();
      f();
      f();
      f();
      f();
    }
    
    fn () {
      var n = 0;
      fn1 () {
        n++;
        print(n);
      };
      return fn1;
    }
    

    相关文章

      网友评论

          本文标题:dart快速入门教程 (5)

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