Dart之函数(递归、匿名、自执行、可选参数、默认参数、命名参数)

简介: Dart之函数(递归、匿名、自执行、可选参数、默认参数、命名参数)

一、函数定义格式

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

返回类型、参数可以省略,如没有返回值,不需要return 返回值;

//没有明确是否有返回值,没有返回值
fn1() {}
//没有明确是否有返回值,有返回值
fn2() {
  return 1;
}
//明确没有返回值
void f3() {}
//明确有返回值
int f4() {
  return 5;
}
//明确有返回值,有参数
int f6(int a,int b) {
  return a+b;
}

二、有参函数

//  自定义方法
  int add2(int a, int b) {
    return a + b;
  }
 
  print(add2(3, 4)); //55

三、匿名函数

  var fn3 = () {
    print("匿名方法");
  };
  fn3(); //匿名方法

四、自执行函数

//  自执行方法
  ((){print("我是自执行方法!");})();
//  带参数自执行方法
  ((int a){
    print(a);//10
  })(10);
}

五、可选参数函数

 // 自定义方法,可选参数
String printUserInfo(String username, [age]) {
  if (age == null) {
    return username;
  }
  return "$username---$age";
}
 
  print(printUserInfo("zhangsan")); //zhangsan
  print(printUserInfo("zhangsan", 56)); //zhangsan---56

六、默认参数函数、命名参数

//自定义方法,默认参数
int add3([int a = 1, int b = 2]) {
  return a + b;
}
 
//自定义方法,命名参数
 
int add4(int a, {int b = 4}) {
  return a + b;
}
  print(add3()); //3
  print(add3(9, 89)); // 98
  print(add4(1, b: 16)); //17

七、函数参数为另一个函数

//自定义方法,参数为一个方法
fn1() {
  print("fn1");
}
 
fn2(fname) {
  fname();
}
 
  fn2(fn1); //fn1

八、函数之间调用

//判断一个数是否为偶数
bool isEvenNumber(int n) {
  if (n % 2 == 0) {
    return true;
  }
  return false;
}
//打印0-n的所有偶数
void printNum(int n) {
  for (int i = 0; i <= n; i++) {
    if (isEvenNumber(i)) {
      print(i);
    }
  }
}
 
  printNum(7); //0 2 4 6

九、箭头函数

  ["1", "2", "3"]
      .map((e) => "$e$e")
      .toList()
      .forEach((element) => print(element)); // 11 22  33

十、递归函数

main(){
//  递归计算阶乘
  var sum=1;
 int fn(int n){
    sum*=n;
    if (n!=1) {
      fn(n-1);
    }
    return sum;
 }
  print(fn(5)); //120
}
相关文章
|
JavaScript 中间件 API
nuxt3:我们开始吧-开发-配置-部署(一)
nuxt3:我们开始吧-开发-配置-部署(一)
1367 0
|
Dart
[Flutter]足够入门的Dart语言系列之函数:函数定义、调用、5种参数类型和main函数
函数(Function)也被称为方法(Method)。其最直观的理解就是数据中的函数,比如y=f(x),在编程中,f对输入x进行处理,返回结果y,就是一个函数......
1400 0
[Flutter]足够入门的Dart语言系列之函数:函数定义、调用、5种参数类型和main函数
|
XML Java 数据库连接
Mybatis的mapper.xml 映射文件没有提示?
1、先来看一下Mapper.xml的头文件 ——1-1、从标文件中可以看到标黄的是Mapper.xml的命名空间,不提示就是该网络的地址获取不到信息 或 没有配置目录的mybatis-3-mapper.dtd
Mybatis的mapper.xml 映射文件没有提示?
|
存储 iOS开发
iOS 内购 payment.applicationUsername 的坑
iOS 内购 payment.applicationUsername 的坑
574 0
|
安全 开发工具 Android开发
几个Flutter常见诊断错误与解决Android toolchain - develop for Android devices X Unable to locate Android SDK
几个Flutter常见诊断错误与解决Android toolchain - develop for Android devices X Unable to locate Android SDK
4300 0
|
Dart
Dart基础:进制转换、int与string互转
Dart基础:进制转换、int与string互转
353 3
|
JSON Dart 测试技术
Flutter中高级JSON处理:使用json_serializable进行深入定制
Flutter中高级JSON处理:使用json_serializable进行深入定制
2328 3
|
人机交互
Flutter笔记 - ListTile组件及其应用
Flutter笔记 - ListTile组件及其应用
765 0
|
调度
cron表达式都有那些?
【10月更文挑战第12天】cron表达式都有那些?
334 2
|
开发工具 Android开发 git
鸿蒙Flutter实战:01-搭建开发环境
本文介绍了如何搭建鸿蒙 Flutter 开发环境,包括安装 DevEco Studio 等工具,并详细说明了 Mac 和 Windows 系统下的环境变量配置。此外,还介绍了如何使用 FVM 管理多个 Flutter 版本,并提供了一些常见问题的解决方案和交流群信息。
478 0
鸿蒙Flutter实战:01-搭建开发环境