swift 简单语句 控制流语句

在 Swift 中。有两种类型的语句:简单语句和控制流语句。简单语句是最常见的。用于构造表达式和声明。控制流语句则用于控制程序运行的流程,Swift 中有三种类型的控制流语句:循环语句、分支语句和控制传递语句。

循环语句用于反复运行代码块。分支语句用于运行满足特定条件的代码块;控制传递语句则用于改动代码的运行顺序。在稍后的叙述中,将会具体地介绍每一种类型的控制流语句。

是否将分号(;)加入到语句的结尾处是可选的。但若要在同一行内写多条独立语句,请务必使用分号。

GRAMMAR OF A STATEMENT

statement → expression; opt

statement → declaration; opt

statement → loop-statement; opt

statement → branch-statement; opt

statement → labeled-statement

statement → control-transfer-statement; opt

statement → statment statements; opt

循环语句

取决于特定的循环条件,循环语句同意反复运行代码块。Swift 提供四种类型的循环语句:for语句、for-in语句、while语句和do-while语句。

通过break语句和continue语句能够改变循环语句的控制流。有关这两条语句。详情參见 Break 语句和 Continue 语句。

GRAMMAR OF A LOOP STATEMENT

loop-statement → for-statement

loop-statement → for-in-statement

loop-statement → while-statement

loop-statement → do-while-statement

For 语句

for语句同意在反复运行代码块的同一时候,递增一个计数器。

for语句的形式例如以下:

  1. for `initialzation`; `condition`; `increment` {
  2. `statements`
  3. }

initialzation、condition 和 increment 之间的分号,以及包围循环体 statements 的大括号都是不可省略的。

for语句的运行流程例如以下:

1、initialzation 仅仅会被运行一次,通经常使用于声明和初始化在接下来的循环中须要使用的变量。

2、计算 condition 表达式: 假设为true。statements 将会被运行,然后转到第3步。假设为false,statements 和 increment 都不会被运行。for至此运行完成。

3、计算 increment 表达式。然后转到第2步。

定义在 initialzation 中的变量仅在for语句的作用域以内有效。condition 表达式的值的类型必须遵循LogicValue协议。

GRAMMAR OF A FOR STATEMENT

for-statement → for for-init opt ; expression opt ; expression opt code-block

for-statement → for ( for-init opt ; expression opt ; expression opt ) code-block

for-statement → variable-declaration | expression-list

For-In 语句

for-in语句同意在反复运行代码块的同一时候。迭代集合(或遵循Sequence协议的随意类型)中的每一项。

for-in语句的形式例如以下:

  1. for `item` in `collection` {
  2. `statements`
  3. }

for-in语句在循环開始前会调用 collection 表达式的generate方法来获取一个生成器类型(这是一个遵循Generator协议的类型)的值。接下来循环開始。调用 collection 表达式的next方法。

假设其返回值不是None。它将会被赋给 item,然后运行 statements,运行完成后回到循环開始处;否则,将不会赋值给 item 也不会运行 statements。for-in至此运行完成。

GRAMMAR OF A FOR-IN STATEMENT

for-in-statement → for pattern in expression code-block

While 语句

while语句同意反复运行代码块。

while语句的形式例如以下:

  1. while `condition` {
  2. `statements`
  3. }

while语句的运行流程例如以下:

1、计算 condition 表达式: 假设为真true,转到第2步。

假设为false。while至此运行完成。

2、运行 statements 。然后转到第1步。

因为 condition 的值在 statements 运行前就已计算出。因此while语句中的 statements 可能会被运行若干次,也可能不会被运行。

condition 表达式的值的类型必须遵循LogicValue协议。同一时候,condition 表达式也能够使用可选绑定,详情參见可选绑定。

GRAMMAR OF A WHILE STATEMENT

while-statement → while while-condition code-block

while-condition → expression | declaration

Do-While 语句

do-while语句同意代码块被运行一次或多次。

do-while语句的形式例如以下:

  1. do {
  2. `statements`
  3. } while `condition`

do-while语句的运行流程例如以下:

1、运行 statements。然后转到第2步。

2、计算 condition 表达式: 假设为true,转到第1步。假设为false,do-while至此运行完成。

因为 condition 表达式的值是在 statements 运行后才计算出,因此do-while语句中的 statements 至少会被运行一次。

condition 表达式的值的类型必须遵循LogicValue协议。同一时候,condition 表达式也能够使用可选绑定,详情參见可选绑定。

GRAMMAR OF A DO-WHILE STATEMENT

do-while-statement → do code-block while while-condition

分支语句

取决于一个或者多个条件的值。分支语句同意程序运行指定部分的代码。

显然。分支语句中条件的值将会决定怎样分支以及运行哪一块代码。Swift 提供两种类型的分支语句:if语句和switch语句。

switch语句中的控制流能够用break语句改动,详情请见Break 语句。

GRAMMAR OF A BRANCH STATEMENT

branch-statement → if-statement

branch-statement → switch-statement

If 语句

取决于一个或多个条件的值。if语句将决定运行哪一块代码。

if语句有两种标准形式,在这两种形式里都必须有大括号。

第一种形式是当且仅当条件为真时运行代码。像以下这样:

  1. if `condition` {
  2. `statements`
  3. }

另外一种形式是在第一种形式的基础上加入 else 语句,当仅仅有一个 else 语句时,像以下这样:

  1. if `condition` {
  2. `statements to execute if condition is true`
  3. } else {
  4. `statements to execute if condition is false`
  5. }

同一时候,else 语句也可包括if语句。从而形成一条链来測试很多其它的条件。像以下这样:

  1. if `condition 1` {
  2. `statements to execute if condition 1 is true`
  3. } else if `condition 2` {
  4. `statements to execute if condition 2 is true`
  5. }
  6. else {
  7. `statements to execute if both conditions are false`
  8. }

if语句中条件的值的类型必须遵循LogicValue协议。同一时候,条件也能够使用可选绑定。详情參见可选绑定。

GRAMMAR OF AN IF STATEMENT

if-statement → if if-condition code-block else-clause opt

if-condition → expression | declaration

else-clause → else code-block | else if-statement opt

Switch 语句

取决于switch语句的控制表达式(control expression),switch语句将决定运行哪一块代码。

switch语句的形式例如以下:

  1. switch `control expression` {
  2. case `pattern 1`:
  3. `statements`
  4. case `pattern 2` where `condition`:
  5. `statements`
  6. case `pattern 3` where `condition`,
  7. `pattern 4` where `condition`:
  8. `statements`
  9. default:
  10. `statements`
  11. }

switch语句的控制表达式(control expression)会首先被计算。然后与每个 case 的模式(pattern)进行匹配。假设匹配成功,程序将会运行相应的 case 分支里的 statements。另外,每个 case 分支都不能为空。也就是说在每个 case 分支中至少有一条语句。假设你不想在匹配到的 case 分支中运行代码。仅仅需在该分支里写一条break语句就可以。

能够用作控制表达式的值是十分灵活的,除了标量类型(scalar types。如Int、Character)外,你能够使用不论什么类型的值,包含浮点数、字符串、元组、自己定义类的实例和可选(optional)类型,甚至是枚举类型中的成员值和指定的范围(range)等。

关于在switch语句中使用这些类型,详情參见控制流一章的 Switch。

你能够在模式后面加入一个起保护作用的表达式(guard expression)。起保护作用的表达式是这样构成的:keywordwhere后面跟着一个作为额外測试条件的表达式。因此,当且仅当控制表达式匹配一个case的某个模式且起保护作用的表达式为真时,相应 case 分支中的 statements 才会被运行。在以下的样例中,控制表达式仅仅会匹配含两个相等元素的元组。如(1, 1):

  1. case let (x, y) where x == y:

正如上面这个样例。也能够在模式中使用let(或var)语句来绑定常量(或变量)。这些常量(或变量)能够在其相应的起保护作用的表达式和其相应的case块里的代码中引用。

可是,假设 case 中有多个模式匹配控制表达式,那么这些模式都不能绑定常量(或变量)。

switch语句也能够包括默认(default)分支。仅仅有其他 case 分支都无法匹配控制表达式时。默认分支中的代码才会被运行。一个switch语句仅仅能有一个默认分支。并且必须在switch语句的最后面。

虽然模式匹配操作实际的运行顺序。特别是模式的计算顺序是不可知的,可是 Swift 规定switch语句中的模式匹配的顺序和书写源码的顺序保持一致。因此。当多个模式含有同样的值且可以匹配控制表达式时,程序仅仅会运行源码中第一个匹配的 case 分支中的代码。

Switch 语句必须是完备的

在 Swift 中。switch语句中控制表达式的每个可能的值都必须至少有一个 case 分支与之相应。在某些情况下(比如,表达式的类型是Int),你能够使用默认块满足该要求。

不存在隐式的贯穿(fall through)

当匹配的 case 分支中的代码运行完成后。程序会终止switch语句。而不会继续运行下一个 case 分支。这就意味着。假设你想运行下一个 case 分支,须要显式地在你须要的 case 分支里使用fallthrough语句。

关于fallthrough语句的很多其它信息。详情參见 Fallthrough 语句。

GRAMMAR OF A SWITCH STATEMENT

switch-statement → switch expression { switch-cases opt }

switch-cases → switch-case switch-cases opt

switch-case → case-label statement | default-label statements

switch-case → case-label ; | default-label ;

case-label → case case-item-list :

case-item-list → pattern guard-clause opt | pattern guard-clause opt, case-item-list

default-label → default :

guard-clause → where guard-expression

guard-expression → expression

带标签的语句

你能够在循环语句或switch语句前面加上标签。它由标签名和紧随其后的冒号(:)组成。在break和continue后面跟上标签名能够显式地在循环语句或switch语句中更改控制流,把控制权传递给指定标签标记的语句。关于这两条语句使用方法。详情參见 Break 语句和 Continue 语句。

标签的作用域是该标签所标记的语句之后的全部语句。你能够不使用带标签的语句,但仅仅要使用它,标签名就必唯一。

关于使用带标签的语句的样例,详情參见控制流一章的带标签的语句。

GRAMMAR OF A LABELED STATEMENT

labeled-statement → statement-label loop-statement | statement-label switch-statement

statement-label → label-name :

label-name → identifier

控制传递语句

通过无条件地把控制权从一片代码传递到还有一片代码,控制传递语句可以改变代码运行的顺序。Swift 提供四种类型的控制传递语句:break语句、continue语句、fallthrough语句和return语句。

GRAMMAR OF A CONTROL TRANSER STATEMENT

control-transfer-statement → break-statement

control-transfer-statement → continue-statement

control-transfer-statement → fallthrough-statement

control-transfer-statement → return-statement

Break 语句

break语句用于终止循环或switch语句的运行。使用break语句时,能够仅仅写break这个关键词。也能够在break后面跟上标签名(label name),像以下这样:

  1. break
  2. break `label name`

当break语句后面带标签名时,可用于终止由这个标签标记的循环或switch语句的运行。

而当仅仅写break时。则会终止switch语句或上下文中包括break语句的最内层循环的运行。

在这两种情况下,控制权都会被传递给循环或switch语句外面的第一行语句。

关于使用break语句的样例,详情參见控制流一章的 Break 和带标签的语句。

GRAMMAR OF A BREAK STATEMENT

break-statement → break label-name opt

Continue 语句

continue语句用于终止循环中当前迭代的运行,但不会终止该循环的运行。使用continue语句时,能够仅仅写continue这个关键词,也能够在continue后面跟上标签名(label name)。像以下这样:

  1. continue
  2. continue `label name`

当continue语句后面带标签名时。可用于终止由这个标签标记的循环中当前迭代的运行。

而当仅仅写break时,可用于终止上下文中包括continue语句的最内层循环中当前迭代的运行。

在这两种情况下,控制权都会被传递给循环外面的第一行语句。

在for语句中,continue语句运行后。increment 表达式还是会被计算。这是由于每次循环体运行完成后 increment 表达式都会被计算。

关于使用continue语句的样例,详情參见控制流一章的 Continue 和带标签的语句。

GRAMMAR OF A CONTINUE STATEMENT

continue-statement → continue label-name opt

Fallthrough 语句

fallthrough语句用于在switch语句中传递控制权。fallthrough语句会把控制权从switch语句中的一个 case 传递给下一个 case 。这样的传递是无条件的。即使下一个 case 的模式与switch语句的控制表达式的值不匹配。

fallthrough语句可出如今switch语句中的随意 case 里,但不能出如今最后一个 case 分支中。

同一时候,fallthrough语句也不能把控制权传递给使用了可选绑定的 case 分支。

关于在switch语句中使用fallthrough语句的样例。详情參见控制流一章的控制传递语句。

GRAMMAR OF A FALLTHROUGH STATEMENT

continue-statement → fallthrough

Return 语句

return语句用于在函数或方法的实现中将控制权传递给调用者,接着程序将会从调用者的位置继续向下运行。

使用return语句时,能够仅仅写return这个关键词,也能够在return后面跟上表达式,像以下这样:

  1. return
  2. return `expression`

当return语句后面带表达式时,表达式的值将会返回给调用者。假设表达式值的类型与调用者期望的类型不匹配,Swift 则会在返回表达式的值之前将表达式值的类型转换为调用者期望的类型。

而当只写return时。不过将控制权从该函数或方法传递给调用者,而不返回一个值。(这就是说,该函数或方法的返回类型为Void或())

GRAMMAR OF A RETURN STATEMENT

return-statement → return expression opt

时间: 2024-10-12 01:54:53

swift 简单语句 控制流语句的相关文章

T-SQL 控制流语句

转载:http://www.cnblogs.com/kissdodog/archive/2013/03/10/2953232.html 控制流语句 控制流语句 批处理: 一个批处理段是由一个或者多个语句组成的一个批处理,之所以叫批处理是因为所有语句一次性被提交到一个SQL实例. 批处理是分批提交到SQL Server示例,因此在不同的批处理里局部变量不可访问. 在不同批处理中,流程控制语句不能跨批处理. 如果想让多个语句分多次提交到SQL实例,则需要使用GO关键字.GO关键字本身并不是一个SQL

Swift中的循环语句

循环语句能够使程序代码重复执行.Swift编程语言支持4种循环构造类型:while. do while.for和for in.for和while循环是在执行循环体之前测试循环条件,而do while是在执行循环体之后测试循环条件.这就意味着for和while循环可能连一次循环体都未执行,而do while将至少执行一次循环体.for in是for循环的变形,它是专门为集合遍历而设计的.一.while语句while语句是一种先判断的循环结构,格式如下:while 循环条件 {    语句组 }wh

[python-1]数据类型、控制流语句、模块、函数和类

- 什么是程序? 程序简单说就是数据结构和算法.而且我们可以把数据结构和算法简单分为面向过程和面向对象两种.比如基本数据类型这些属于面向过程的数据结构,而类/属性和模块可以看成是面向对象的数据结构.基本运算符和控制流可以看作面向过程的算法,而构造和析构过程可以看成是面向对象的算法. - mac检查自带python版本 1. 直接在终端输入python进入交互或者编辑.py的文件 2. exit()是推出python交互 weisubaodeMacBook-Air:~ Andy$ python -

java基础-控制流语句

一般情况下,代码的执行按照从上到下的顺序,然而通过加入一些判断,循环和跳转语句,你可以有条件地执行特定的语句. 接下来分三部分介绍Java的控制流语句,他们是判断语句(if-then, if-then-else, switch),循环语句(for, while, do-while)和跳转语句(break, continue, return). 判断语句 if-then语句 if-then语句是控制流语句中最基本的语句,它告诉程序如果制定的条件为true,则执行一段特定代码. if-then-el

Swift 中的开关语句switch在swift中的使用

在swift 中使用switch 开关语句在进行匹配的时候不需要在匹配成功的地方加上break了,在swift中它会自动在匹配成功的地方跳出去.不会在向下面执行 example: “let vegetable = "red pepper"switch vegetable {case "celery": let vegetableComment = "Add some raisins and make ants on a log."case &qu

一些简单的SQL语句

简单的SQL入门 一,简介 1,  一个数据库包含一个或多个表,表包含带有数据的记录(行) 2,  SQL对大小写不敏感,语句的分号看具体情况 二,语法 1,  数据操作语言:DML a)         SELECT:从数据库获取数据 b)         UPDATE:更新数据库表中的数据 c)         DELETE:从数据库中删除数据 d)         INSERT INTO:向数据表中插入数据 2,  数据定义语言:DDL a)         CREATE DATABASE

linux 几个控制流语句的格式例子(if语句)

linux 几个控制流语句的格式例子:if 语句例子:#!/bin/sh a=10b=20 if [ $a == $b ]then echo "a is equal to b"elif [ $a -gt $b ]then echo "a is greater than b"elif [ $a -lt $b ]then echo "a is less than b"else echo "None of the condition met&

python 控制流语句

一.print语句 1.1 基本输出 1.2 print的逗号 1.2 输出到文件 >>为重定向 >>> a=2 >>> print a,2 #,表示不换行 2 2 #!/usr/bin/python2.6  #coding=utf-8 print "2", print "3", print "4" f = open('print.txt','w') print >>f,"He

(翻译)《二》语言基础(4)--控制流语句

控制流语句 代码中的语句通常都是自上而下顺序执行.但是控制流语句打断执行的流程,利用决策.循环.分支,让你的程序有条件的执行代码的某一部分.本节描述java支持的决策语句(if-then,if-then-else,switch),循环语句(for,while,do-while),分支语句(break,continue,return). if-then和if-then-else语句 if-then是控制流语句中最基础的.它告诉你的程序执行某段代码,当某个特定的条件为真时.比如,Bicycle类会允