当前位置:首页 > 后端开发 > 正文内容

Flutter/Dart第11天:Dart函数办法详解

邻居的猫1个月前 (12-09)后端开发284

Dart官方文档:https://dart.dev/language/functions

重要说明:本博客依据Dart官网文档,但并不是简略的对官网进行翻译,在掩盖中心功用情况下,我会依据个人研制经历,参加自己的一些扩展问题和场景验证。

Dart言语是纯面向目标的编程言语,便是是函数也是目标,它的类型便是Function类(https://api.dart.dev/stable/3.1.3/dart-core/Function-class.html)。

如下代码样例,函数的不同完成。假如函数完成只是只要1个表达式,那么函数能够运用箭头语法:=> return expression;

// 函数完成
bool isNoble(int atomicNumber) {
  return _nobleGases[atomicNumber] != null;
}

// 箭头语法,上诉函数的简略语法
bool isNoble(int atomicNumber) => _nobleGases[atomicNumber] != null;

命名参数(必选,默许值)

参数格局:functionName({param1 = value1, param2, ...})

函数调用:functionName(param1: valueX, param2: value2, ...)

默许情况下,命名参数是可选的,除非显现添加required符号。在Flutter中,尤其是Widget是结构函数,只是运用命名参数,虽然参数是必填参数。

特别注意:就算了添加required的必选参数,它也能够是可空的。

方位参数(可选,默许值)

可选方位参数经过[]包裹的参数列表,默许值为null,能够设置默许值:

参数格局:functionName(param1, param2, [param3 = value3, param4]);

函数调用:functionName(value1, value2);或functionName(value1, value2, value3);或functionName(value1, value2, value3, value4);

main()函数

任何Dart运用,都必须包含一个尖端main()函数,它是运用的仅有进口。它的回来值是void,入参是List<String>类型。

代码样例:如下代码,咱们在履行Dart文件时,指定了参数dart args.dart 1 test

void main(List<String> arguments) {
  print(arguments);

  assert(arguments.length == 2);
  assert(int.parse(arguments[0]) == 1);
  assert(arguments[1] == 'test');
}

函数作为参数

函数能够作为其他函数的入参,也能够赋值给变量。

// 1. 函数作为函数入参
void printElement(int element) {
  print(element);
}

var list = [1, 2, 3];
list.forEach(printElement);

// 2. 函数赋值给变量(匿名函数)
var loudify = (msg) => '!!! ${msg.toUpperCase()} !!!';
assert(loudify('hello') == '!!! HELLO !!!');

匿名函数

如上代码,main()printElement()函数都是命名函数。咱们也能够创立匿名函数(如上代码loudify变量的值),特别是在Lambda表达式或许在闭包函数中,匿名函数运用场景许多。

代码样例:如下代码,map()forEach()的入参便是匿名函数。

void main() {
  const list = ['apples', 'bananas', 'oranges'];
  list
    .map((item) => item.toUpperCase())
    .forEach((item) => print('$item: ${item.length}'));
}

函数持平校验

能够进行持平校验的函数包含:尖端函数,静态函数和实例函数。

// 1. 尖端函数
void foo() {}

class A {
  // 2. 静态办法
  static void bar() {}
  // 3. 实例办法
  void baz() {}
}

void main() {
  Function x;

  // 尖端函数持平校验
  x = foo;
  assert(foo == x);

  // 静态办法持平校验
  x = A.bar;
  assert(A.bar == x);

  // 实例办法持平校验
  var v = A(); // A实例#1
  var w = A(); // A实例#2
  var y = w;
  x = w.baz;

  // 同是A实例#2办法
  assert(y.baz == x);

  // 不同实例办法
  assert(v.baz != w.baz);
}

函数回来值

假如没有显现回来值,函数默许回来null,Record记载能够聚合回来多个值。

(String, int) foo() {
  return ('something', 42);
}

生成器函数

生成器函数能够推迟产出一系列值,Dart中内置2类生成器函数:

  1. 同步生成器:回来1个Iterable目标。
  2. 异步生成器:回来1个Stream目标。

同步生成器函数:运用sync*符号函数体,而且运用yield表达式发生值。

Iterable<int> naturalsTo(int n) sync* {
  int k = 0;
  while (k < n) yield k++;
}

异步生成器函数:运用async*符号函数体,而且运用yield表达式发生值。

Stream<int> asynchronousNaturalsTo(int n) async* {
  int k = 0;
  while (k < n) yield k++;
}

假如生成器是递归的,能够经过yield*来提高功能。

Iterable<int> naturalsDownFrom(int n) sync* {
  if (n > 0) {
    yield n;
    yield* naturalsDownFrom(n - 1);
  }
}

我的本博客原地址:https://ntopic.cn/p/2023100601


扫描二维码推送至手机访问。

版权声明:本文由51Blog发布,如需转载请注明出处。

本文链接:https://www.51blog.vip/?id=272

分享给朋友:

“Flutter/Dart第11天:Dart函数办法详解” 的相关文章

rbenv:Ruby 多版别办理利器

rbenv:Ruby 多版别办理利器

在 Ruby 开发的国际中,常常需求面临不同项目运用不同 Ruby 版别的状况。这时,一个高效、灵敏且易于运用的 Ruby 版别办理东西就显得尤为重要。 rbenv 正是这样一个东西,它答应开发者在同一台核算机上轻松装置、切换和办理多个 Ruby 版别。本文将具体介绍 rbenv 的装置、根本运用...

Flutter/Dart第05天:Dart特别特性Mixin详解

Flutter/Dart第05天:Dart特别特性Mixin详解

Dart官网文档:https://dart.dev/language/mixins 重要阐明:本博客依据Dart官网文档,但并不是简略的对官网进行翻译,在掩盖中心功用情况下,我会依据个人研制经历,参加自己的一些扩展问题和场景验证。 Mixin意图和运用办法(with) 官网文档:Mixins are...

c语言数组定义和赋值,C语言数组定义与赋值详解

c语言数组定义和赋值,C语言数组定义与赋值详解

定义数组 一维数组```c// 定义一个整型数组,包含10个元素int arr;``` 二维数组```c// 定义一个整型二维数组,包含3行4列int matrix;``` 初始化数组 一维数组```c// 初始化一个整型数组int arr = {1, 2, 3, 4, 5};``` 二维数组``...

计算机二级c语言答案,计算机二级C语言考试答案解析

计算机二级c语言答案,计算机二级C语言考试答案解析

你可以通过以下资源获取计算机二级C语言的真题及答案:1. 历年计算机二级C语言真题及答案: 这里提供了历年计算机二级C语言的真题及答案,可以在线评测。2. C语言二级题库带答案 解析: 该文档包含程序设计题的题目、程序(含空)以及答案,适合进行练习。3. 2023年全国计...

java官方网站,java官网

java官方网站,java官网

1. Java官方网站(Oracle): 2. 适用于所有操作系统的Java下载: 3. 适用于Windows的Java下载: 这些网站提供了Java的最新版本、功能介绍、许可证信息以及下载和安装指导。如果您需要JDK或JRE,可以访问上述链接获取详细信息。Java...

java6,回顾与展望

java6,回顾与展望

Java 6(也称为Java SE 6)是Java编程语言的一个版本,由Sun Microsystems(现为Oracle Corporation)于2006年12月11日发布。Java 6引入了许多新特性和改进,包括但不限于:1. 脚本语言支持:Java 6支持使用脚本语言(如JavaScript...