Flutter入门Dart语言:函数入门指南
Posted 小雨青年
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Flutter入门Dart语言:函数入门指南相关的知识,希望对你有一定的参考价值。
文章目录
一、概述
Dart 是一门的面向对象语言,因此函数也是对象。
函数可以像其他任何对象一样,被赋值给变量或作为另一个函数的参数使用。而且,Dart 的类实例也可以像调用函数一样使用。
Dart 还支持函数表达式,也就是匿名函数或 Lambda 表达式。这类函数可以和命名函数一样被赋值给变量或作为参数使用。在 Dart 中函数是一等公民,可以像其他对象一样被处理。
二、函数基础
1.定义函数
函数的名称应该具有描述性,以便其他人能够快速地理解它的功能。函数名可以由多个单词组成,每个单词之间使用下划线 _ 进行分割。函数名不能以数字开头,并且不应该包含空格或特殊字符。
函数的参数是在函数名后面的括号中指定的。参数用逗号分隔,可以没有参数或有多个参数。参数包括参数名称和参数类型,类型用冒号 : 分隔。在函数体内,可以使用参数名称引用参数值。
Dart 中的函数可以选择性地返回值。如果函数需要返回一个值,则需要在函数体内使用 return
语句返回该值。返回类型必须与函数定义中指定的返回类型相同或兼容。
int sum(int a, int b)
return a + b;
2.调用函数
在 Dart 中,要调用函数,需要使用函数名和参数列表。如果函数有返回值,可以将返回值赋值给变量或直接使用。
void main()
int a = 10;
int b = 20;
int result = sum(a, b);
print(result); // 输出:30
在这个示例中,首先定义了两个整数变量 a
和 b
,并将它们的值分别设置为 10
和 20
。接着,调用 sum
函数并将返回值赋值给 result
变量。最后,使用 print
函数输出 result
变量的值。
3.函数参数
在 Dart 中,函数可以接受零个或多个参数。函数参数可以是必选的,也可以是可选的。
必选参数是指在调用函数时必须传递的参数,否则编译器会报错。Dart 中函数的参数默认都是必选的,如果想要定义可选参数,需要使用[]
来标记参数。
可选参数是指在调用函数时可以省略的参数。Dart 中有两种可选参数:命名可选参数和位置可选参数。
- 命名可选参数是指在调用函数时可以使用参数名来指定参数的值。在函数参数列表中,使用
将参数括起来来标记命名可选参数。
- 位置可选参数是指在调用函数时可以省略参数名的可选参数。在函数参数列表中,使用
[]
将参数括起来来标记位置可选参数。
int test(int a, int b = 1, int c = 10)
return a - b - c;
void main()
int result1 = test(10, c: 30);
int result2 = test(10, b: 20, c: 30);
int result3 = test(10);
print(result1);
print(result2);
print(result3);
这是个命名可选参数的例子,执行效果如下。
void test(int a, [int b = 0, int c = 0])
print('a: $a, b: $b, c: $c');
void main()
test(1);
test(2, 3);
test(4, 5, 6);
这是个位置可选参数的例子,执行效果如下。
在上面的例子中,函数 test
有三个参数,其中 b
和 c
是位置可选参数,使用方括号 []
括起来。在函数调用时,如果不提供可选参数,则会使用默认值,例如 test(1)
的调用结果为 a: 1, b: 0, c: 0
,其中 b
和 c
的值都是默认值 0。
在使用可选参数时,有几个需要注意的事项:
- 必选参数必须放在可选参数前面。
- 可选参数可以有默认值,但是必选参数不可以有默认值。
- 如果函数既有命名可选参数又有位置可选参数,那么位置可选参数必须在命名可选参数前面。
- 如果函数有多个命名可选参数,那么在调用函数时必须使用参数名来指定参数值。
4.函数返回值
函数的返回值指的是函数执行后所返回的结果。在Dart中,可以使用return
关键字将一个值返回给函数的调用者。
上面的例子中,test
返回的就是类型为int
,表示它将返回一个整数值。
函数的返回值可以是任何类型,包括Dart内置类型和用户定义的自定义类型。下面是一个使用自定义类型作为返回值的示例:
class Morty
final String name;
final int age;
Morty(this.name, this.age);
Morty createMorty(String name, int age)
if (name.isEmpty || age < 0)
// 返回一个默认的Morty对象
return Morty('', 0);
// 返回一个新的Morty对象
return Morty(name, age);
void main()
Morty morty1 = createMorty('Morty Smith', 14);
Morty morty2 = createMorty('', -5);
print('Morty 1: $morty1.name, $morty1.age');
print('Morty 2: $morty2.name, $morty2.age');
输出结果为如下所示。
上面的代码定义了一个名为createMorty
的函数,该函数接受两个参数,分别是Morty的名字和年龄,并返回一个Morty类型的对象。
在函数中,我们通过Morty类的构造函数来创建一个新的Morty对象,然后将传入的参数分别赋值给该对象的name和age属性。
在调用createMorty
函数时,我们传入了"Morty Smith"和14这两个参数。由于该函数返回一个Morty类型的对象,我们将其赋值给了变量morty
,然后通过print
函数将morty
打印出来,从而显示出该对象的name和age属性值。
需要注意的是,在函数中,如果Morty类的构造函数参数被声明为required
,则在创建Morty对象时必须传入相应的参数值。同时,由于在该示例中我们将Morty类的属性都声明为非空类型,因此不能返回空对象,否则会导致编译错误
三、总结
这次我们学习了函数的基本用法,包括:
- 定义函数;
- 调用函数;
- 给函数传参;
- 函数的返回值。
通过这些,我们就可以在 dartpad
上练习dart的基础语法了。
以上是关于Flutter入门Dart语言:函数入门指南的主要内容,如果未能解决你的问题,请参考以下文章