Flutter开发 3.Dart语言基础-全局函数

16 篇文章 0 订阅

Flutter开发 3.Dart语言基础-全局函数

本章节主要介绍全局函数的类型和使用,不包括类方法。

1.main() 函数

main() 函数
每个 Dart 程序都必须有一个 main() 顶级函数作为程序的入口, main() 函数返回值为 void 并且有一个 List 类型的可选参数。

最简单的无参数main函数如下

void main() {
  print('Hello, World!');
}
void main(List<String> arguments) {
  print(arguments);
}

如果你的vscode使用了CodeRunner,运行出错找不到dart的情况下:

 /bin/sh: dart: command not found

请参考 CodeRunner配置Dart

接下来我们需在测试为main函数传递参数,首先我们的测试文件所在的目录,我创建一个测试文件,名字为 main.dart 然后打开launch.json文件,将program配置为main.dart路径,在args中添加main函数的参数。
在这里插入图片描述

配置好保存后,切换到main.dart文件,点击顶部运行菜单,以调试(F5)和非调试方式运行都可以。
调试控制台窗口可以看到输出结果。
在这里插入图片描述

2.匿名函数(Closure 闭包)

set类型的匿名函数示例:

  var s2 = {"ab", "ac", "ad"};
  s2.forEach((element) {
    print(element);
  });

运行后结果如下

ab
ac
ad

map类型的匿名函数示例:

  var m2 = {"a": "acrobat", "b": "backup", "c": "class", "d": "description"};
  m2.forEach((key, value) {
    print(key + ":" + value);
  });

运行后结果如下

a:acrobat
b:backup
c:class
d:description

3.函数参数

3.1 一般参数

void main() {
    var s1 = {"acrobat", "backup", "class", "description"};
    s1.forEach(showElement);
}
void showElement(String element) {
    print(element);
}

运行后结果如下

acrobat
backup
class
description

3.2 值传递参数

dart中对于基础数据类型String、int、bool、double是值传递, 虽然他们也是class,但仍然是值传递,不会随函数内的改变而变化。

void func(int ia, String sa, double da) {
  print("func: ia=$ia; sa=$sa; da=$da;");
  ia = 22;
  sa = "22";
  da = 22.0;
}

void main() {
  int ia = 11;
  String sa = "11";
  double da = 11.0;
  func(ia, sa, da);
  print("main: ia=$ia; sa=$sa; da=$da;")
}

运行后结果如下:

flutter: func: ia=11; sa=11; da=11.0; 
flutter: main: ia=11; sa=11;  da=11.0;

3.3 引用传递参数

List、Set、Map、class是引用传递

void func(List<int> l1) {
  print("func:");
  l1.forEach((element) => print(element));
  l1.add(5);
}

void main() {
  List<int> l1 = [1, 2, 3];
  func(l1);
  print("main:");
  l1.forEach((element) => print(element));
}

运行一下输出结果如下:

flutter: func:
flutter: 1
flutter: 2
flutter: 3
flutter: main:
flutter: 1
flutter: 2
flutter: 3
flutter: 5

3.4 可选参数

可选参数的意思就是说,你可以传也可以不传,并不是必须的要的。

void func(int ia, String sa, double da, [int? ib, int? ic]) {
  print("func: ia=$ia; sa=$sa; da=$da; ib=$ib; ic=$ic");
  ia = 22;
  sa = "22";
  da = 22.0;
  ib = 33;
}

void main() {
  int ia = 11, ib = 11;
  String sa = "11";
  double da = 11.0;
  func(ia, sa, da, ib);
  print("main: ia=$ia; sa=$sa;  da=$da; ib=$ib;");
}

ib和ic就是可选参数,调用处有没有这个实参都可以。
运行输出如下:

flutter: func: ia=11; sa=11; da=11.0; ib=11; ic=null
flutter: main: ia=11; sa=11;  da=11.0; ib=11;

3.5 命名参数

定义函数时,使用{param1, param2, …},放在参数列表的最后面,用于指定命名参数。
命名参数也是可选的,调用时也可以省略某个参数.

void func(int id, {String? name, int? age, String remark = "无"}) {
  print("func: id=$id; name=$name; age=$age; remark=$remark");
}

void main() {
  func(
    19,
    age: 29,
    name: "爪爪",
  );
}

运行一下,看一下效果:

flutter: func: id=19; name=爪爪; age=29; remark=
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

xuanwenchao

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值