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

 
                
            
         
         浙公网安备 33010602011771号
浙公网安备 33010602011771号