zoukankan      html  css  js  c++  java
  • dart快速入门教程 (5)

    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;
    }
    

    螺钉课堂视频课程地址:http://edu.nodeing.com

  • 相关阅读:
    CF1539 VP 记录
    CF1529 VP 记录
    CF875C National Property 题解
    CF1545 比赛记录
    CF 1550 比赛记录
    CF1539E Game with Cards 题解
    CF1202F You Are Given Some Letters... 题解
    vmware Linux虚拟机挂载共享文件夹
    利用SOLR搭建企业搜索平台 之九(solr的查询语法)
    利用SOLR搭建企业搜索平台 之四(MultiCore)
  • 原文地址:https://www.cnblogs.com/dadifeihong/p/12047599.html
Copyright © 2011-2022 走看看