18910140161

Dart 基本概念之流控制语句与函数

顺晟科技

2021-06-16 10:32:48

314

流程控制语句定义了Dart中的主要语法,语句通常使用一个或多个关键字来完成给定的任务。语句可以像告诉函数退出一样简单,也可以像指定重复命令一样复杂。

本文将详细解释流量控制语句和功能。

流量控制语句

如果语句

所有编程语言中最常用的语句是if语句。以下是if语句的语法:

if (condition)语句1 else语句2

条件可以是任意表达式,这个表达式的求值结果必须是布尔值,这和JavaScript、PHP的要求不同。在JavaScript和PHP中,即使表达式的求值结果不是布尔值,脚本引擎在执行代码时也会在底部隐式转换为布尔值。

Statement1和statement2可以是一行代码,也可以是一个代码块(用一对大括号括起来的多行代码):

void main() {

if (2 1)

Print('2大于1 ');//output: 2大于1

else {

Print('2小于1 ');

}

}

业界广为推崇的更佳做法是始终使用代码块,即使只有一行代码要执行,因为这样可以消除人们的误解,否则人们可能会对在不同条件下执行哪些语句感到困惑。

void main() {

if (2 1) {

Print('2大于1 ');//output: 2大于1

} else {

Print('2小于1 ');

}

}

Do-while语句

Do-while语句是一个测试后循环语句,也就是说,只有在循环体中的代码被执行后,才会测试退出条件。换句话说,在计算条件表达式之前,循环体中的代码至少执行一次。需要注意的是,条件表达式的语法和if语句一样,只能是布尔值。以下是do-while语句的语法:

do {

声明

} while(表达式);

以下是一个例子:

void main() {

int I=0;

do {

I=2;

印刷品(I);

} while(I 10);

}

//output: 2 4 6 8 10

while语句

While属于预测试循环语句,即在执行循环体中的代码之前,将评估退出条件。

void main() {

int i=10

while(i 0) {

print(-I);

}

}

//output: 9 8 7 6 5 4 3 2 1 0

For语句

for语句也是一个预测试循环语句,但是它必须在执行循环之前初始化变量,并定义循环之后要执行的代码。

void main() {

for(int I=0;i 10i ) {

印刷品(I);

}

}

//output: 0 1 2 3 4 5 6 7 8 9

中断和继续语句

Break和continue语句用于控制循环中代码的执行。其中break语句会立即退出循环,强制循环外的语句继续执行,而continue语句会立即退出循环,但退出循环后会继续从循环顶部执行。以下是中断的示例:

void main() {

int i=10

while (i 0) {

-I;

if(I 1==0)break;

印刷品(I);

}

print('结束');

}

//output: 9结束

如果上面的代码可以被2整除,那么循环会立即停止。这里有一个继续的例子。以下代码将只打印奇数:

void main() {

int i=10

while (i 0) {

-I;

if (i 1==0)继续;

印刷品(I);

}

print('结束');

}

//output: 9 7 5 3 1结束

交换语句

switch语句与if语句关系最为密切,也是其他语言中常用的一种流量控制语句。以下是一个使用示例:

void main() {

字符串i=' A

字符串状态;

开关(i) {

案件编号:

状态='师从上帝';

打破;

案例' A':

状态='师从暴君';

打破;

案例' B':

状态='学会混';

打破;

默认值:

状态='人渣';

}

print(state);//output:学霸

}

断言语句

Assert,顾名思义,就是一个断言,使用assert(条件)的格式。当条件评估为假时,程序将终止其执行。例如:

void main() {

print(' start ');

assert(1 0);

打印(' over ');

}

//output:开始

//未处理的异常:

//失败的断言:第23行位置10: '1 0':不是真的。

上面的代码只会输出start,在调试环境中会报错。

功能

函数是任何语言的核心概念。任何数量的语句都可以被函数封装,并且可以随时随地被调用和执行。该函数的基本语法如下:

sum(num1,num2) {

返回num1 num2

}

上面的代码中定义了一个sum函数,需要传入两个参数:num1和num2,参数的类型是int。

Dart更佳实践建议为函数体指定类型,因此在下面的代码中,我们可以指定int:

int sum(int num1,int num2) {

返回num1 num2

}

对于一个只有一个表达式的函数,我们可以用胖箭头语法来缩写,和ECMAScript 6中的箭头函数语法很像,Dart更佳实践推荐箭头函数省略类型,所以最后写成如下:

sum(num1,num 2)=num 1 num 2;

参数

函数可以有两种类型的参数:必需参数和可选参数,必需参数在参数列表之前,可选参数在必需参数之后。

可选参数也可以通过两种方式定义:可选命名和可选位置。

可选命名参数使用{param1,param2,…}形式指定命名参数:

sum({num1,num 2 })=num 1 num 2;

可选位置参数:将参数放入[]:

sum(num1,num2,[num 3])=num 1 num 2;

参数默认值

定义函数时,可以使用=来定义参数的默认值。如果没有定义默认值,默认值为空。

为可选命名参数设置默认值:

sum({num1=1,num 2=2 })=num 1 num 2;

设置可选位置参数的默认值:

sum(num1,num2,[num3=3,num 4])=num 1 num 2;

main()函数(入口函数)

每个应用程序都需要一个main()入口函数来执行。main()函数的返回值是void,并且有一个可选的ListString参数。

因此,如果需要调用sum函数,可以在main中调用:

sum({num1=1,num 2=2 })=num 1 num 2;

main() {

final foo=sum();

最终bar=sum(num1: 123,num 2: 456);

print(foo);//output: 3

print(bar);//output: 579

}

在以下示例中,主函数使用方法参数作为输入参数:

main(ListString参数)=print(参数);

//output: []

一阶函数对象

函数本身是一个对象,因此可以将另一个方法作为参数传入:

int batchIncrement(int num)=num;

void main() {

var numberList=[1,2,3];

final NumberListBig=NumberList . map(batchIncrement);

打印(NumberListBig);//output: (2,3,4)

}

匿名函数(匿名函数)

创建一个没有名称的函数,并将其分配给一个变量。在这种情况下,创建的函数称为匿名函数(也称为lambda函数)。用法示例:

函数canonical=(String str)=print(str . touppercase());

main()=canonical(' PHP ');//output: PHP

下面的代码将参数为1的匿名函数传递给映射方法:

void main() {

var水果=['香蕉','黄瓜','茄子'];

final水果索引=水果.地图((I)=' $ {水果.索引of(I)} : $ I ');

打印(水果索引);//output: (0 :香蕉,1 :黄瓜,2 :茄子)

}

静态范围

Dart是静态范围语言,也就是说大括号中的变量只能在大括号中访问,和PHP、JAVA一样。ECMAScript 6还使用了let和const这两个关键字来实现这个功能。

在下面的例子中,外层的所有变量都可以在嵌套函数中访问:

const topLevel=true

void main() {

const insideMain=true

void myFunction() {

const insideFunction=true

void nestedFunction() {

const InSidenestedFunction=true;

打印(InSidenestedFunction);//output: true

打印(InSide Function);//output: true

打印(InSidemain);//output: true

打印(TopLevel);//output: true

}

nested FuncTion();

}

my FuncTion();

}

返回值

所有函数都有返回值。如果没有指定返回值,默认情况下,return null语句将作为函数的最后一条语句执行。

我们已经准备好了,你呢?
2024我们与您携手共赢,为您的企业形象保驾护航