Dart语法基础系列六《函数》

2021-11-04 16:30:27 浏览数 (1)

通过实战了解Dart的函数常用知识点

通过简单的实例,更快捷的了解Dart函数相关知识。示例以最简单的sum 函数开始。

函数定义


方法一

首先我们 以JavaScript的方式定义Sum函数

代码语言:javascript复制
  sum(a, b) {
    return a   b;
  }

  print(sum(2, 3));

运行一下是可以的,类型和返回值都会自动的推断,默认dynamic

方法二

我们加上类型改造下sum,这样就限制了传入类型。

代码语言:javascript复制
  int sum(int a, int b) {
    return a   b;
  }

方法三(简写)

当然,简单的表达式可以省略部分

代码语言:javascript复制
   sum(a, b) => a   b;

函数命名参数

函数传入的时候,我们想显示a,b 参数的名称。dart 既支持像js 一样传参,又满足C家族函数形参名的形式。

代码语言:javascript复制
 sum({required int a, required int b}) {
      return a   b;
    }

 sum(a: 3, b: 4);

函数可选参数

可选参数分为两类:

  • 匿名参数可选
  • 具名参数可选

匿名参数可选

sum 添加一个参数c,可选。可选部分加上[]即可

代码语言:javascript复制
sum(a, b, [c]) {
      return a   b   (c ?? 0);
    }

sum(2, 2);

具名参数可选

具名参数,需要加上可选修饰符?

代码语言:javascript复制
    sum({required int a, required int b, int? c}) {
      return a   b   (c ?? 0);
    }

    sum(a: 3, b: 4);

函数默认值

  • 只有可选参数才有默认值,必选参数不能设置
  • 可选参数如果不写默认值,默认为null
代码语言:javascript复制
 sum({required int a, required int b, int? c = 2}) {
      return a   b   (c ?? 0);
    }

 sum(a: 3, b: 4);

匿名函数 和 箭头表达式

匿名函数

匿名函数格式:

([[Type] param1[, …]]) { codeBlock; };

函数作为对象可以赋值给变量,我们可以写一个匿名sum函数赋值给变量.

把刚才的函数改造下,删去名字即可。

代码语言:javascript复制
 Function aa = ({required int a, required int b, int? c = 2}) {
      return a   b   (c ?? 0);
    };

 aa(a: 3, b: 4);

箭头表达式

dart 匿名函数 对应js 箭头函数。dart 箭头函数作用只是省略{} ,后面跟表达式。

代码语言:javascript复制
Function aa = ({required int a, required int b, int? c = 2}) => a   b   (c ?? 0)

aa(a: 3, b: 4);

0 人点赞