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

  • 相关阅读:
    webservice的两种客户端调用方式(总结)
    Maven笔记
    在myeclipse中建立webservice,发布webservice并且调用webservice接口
    1分钟内使用Adobe Dreamweaver CS5建立导航菜单
    Asp.Net Cookie的清除
    常用的sql标准建表语句
    Java5的 线程并发库
    使用NPOI操作Excel
    使用.net 内置的SmtpClient来实现邮件的发送
    qlikview 地图插件制作教程
  • 原文地址:https://www.cnblogs.com/dadifeihong/p/12047599.html
Copyright © 2011-2022 走看看