美文网首页
三、Flutter-Dart语法-函数(2)

三、Flutter-Dart语法-函数(2)

作者: 张无奈 | 来源:发表于2021-04-09 17:31 被阅读0次

一、函数的基本定义

Dart是一种真正的面向对象语言,所以即使函数也是对象,所以也有类型, 类型就是Function。

这也就意味着函数可以作为变量定义或者作为其他函数的参数或者返回值.

函数的定义方式:

Effective Dart建议对公共的API, 使用类型注解, 但是如果我们省略掉了类型, 依然是可以正常工作的

sum(num1, num2) {  

  return num1 + num2;

}

另外, 如果函数中只有一个表达式, 那么可以使用箭头语法(arrow syntax)

注意, 这里面只能是一个表达式, 不能是一个语句。 sum(num1, num2) => num1 + num2;

二、函数的参数问题

函数的参数可以分成两类: 必须参数和可选参数

前面使用的参数都是必须参数.

2.1. 可选参数:可选参数可以分为 命名可选参数 和 位置可选参数

定义方式:

命名可选参数: {param1, param2, ...}

位置可选参数: [param1, param2, ...]

命名可选参数的演示:

命名可选参数, 可以指定某个参数是必传的(使用@required, 有问题)

// 命名可选参数的必须

printInfo3(String name, {int age, double height, @required String address}) { 

 print('name=$name age=$age height=$height address=$address');

}

2.2. 参数默认值

参数可以有默认值, 在不传入的情况下, 使用默认值。注意, 只有可选参数才可以有默认值, 必须参数不能有默认值。

Dart中的main函数就是一个接受可选的列表参数作为参数的, 所以在使用main函数时, 我们可以传入参数, 也可以不传入。

2.3 函数是一等公民

在很多语言中, 函数并不能作为一等公民来使用, 比如Java/OC. 这种限制让编程不够灵活, 所以现代的编程语言基本都支持函数作为一等公民来使用, Dart也支持.

这就意味着你可以将函数赋值给一个变量, 也可以将函数作为另外一个函数的参数或者返回值来使用.

2.4匿名函数的使用

大部分我们定义的函数都会有自己的名字, 比如前面定义的foo、test函数等等。

但是某些情况下,给函数命名太麻烦了,我们可以使用没有名字的函数,这种函数可以被称之为匿名函数( anonymous function),也可以叫lambda或者closure

2.5词法作用域

dart中的词法有自己明确的作用域范围,它是根据代码的结构({})来决定作用域范围的,优先使用自己作用域中的变量,如果没有找到,则一层层向外查找。

2.6. 词法闭包

闭包可以访问其词法范围内的变量,即使函数在其他地方被使用,也可以正常的访问。

2.7. 返回值问题

所有函数都返回一个值。如果没有指定返回值,则语句返回null;隐式附加到函数体。

相关文章

  • 三、Flutter-Dart语法-函数(2)

    一、函数的基本定义 Dart是一种真正的面向对象语言,所以即使函数也是对象,所以也有类型, 类型就是Functio...

  • shell编程之函数

    1.函数的定义和语法 函数由两部分组成:函数名和函数体 语法一: 语法二: 语法三: 2.函数调用 调用:函数只有...

  • 四、Flutter-Dart语法(2)

    一. 运算符 1.1除法、整除、取模运算 var num = 7;print(num / 3); // 除法操作,...

  • 三、Flutter-Dart语法(1)

    在VSCode中新建一个helloWorld.dart文件,添加下面的内容: 然后在终端执行dart helloW...

  • linux 函数定义与调用

    函数定义 定义语法 linux shell函数定义语法有2种,如下: 语法1 语法2 注: 不得声明形式参数,故推...

  • 单行函数

    一、SQL函数概述 SQL函数分类 单行函数多行函数 单行函数语法 语法:函数名[(参数1,参数2,….)]注意:...

  • Flutter-Dart语法一

    1.Dart语言的优势 1)Dart 有两种运行方式,静态编译(AOT Ahead Of Time)和动态解释(J...

  • Oracle的nvl函数和nvl2函数

    一、基本语法 介绍一下oracle的nvl函数和nvl2函数。 nvl函数nvl函数基本语法为nvl(E1,E2)...

  • 十三、函数

    c语言函数 语法1 语法2 1.返回类型 2.函数名 3.参数 4.函数体 5.反回值

  • Kotlin-第3节、函数与Lambda闭包

    目录:1、函数的特性语法2、嵌套函数3、扩展函数4、Lambda闭包语法5、高阶函数6、内联函数 1、函数的特性语...

网友评论

      本文标题:三、Flutter-Dart语法-函数(2)

      本文链接:https://www.haomeiwen.com/subject/alcwkltx.html