7.4 控制转移语句起名

7.4 控制转移语句

决定转椅语句可以改变程序执行的次第。Swift 提供了四种控制转移语句:

  • continue
  • break
  • fallthrough
  • return

本章介绍了前二种语句,而return并发在第八章函数中。

年轻人要读书,不必先谈方法,要紧的是先养成好读书、好买书的习惯。
——胡适

Continue

continue用以循环中,程序执行到continue时,会重临当前巡回的最开首。就象是continue会对先后说:“当前的循环已经收尾完成,举行下一次啊”。

注意
for循环中,增量语句反之亦然会被实施。

下边这段代码从字符串中去除了有着空格:

let puzzleInput = "great minds think alike"
var puzzleOutput = ""
for character in puzzleInput {
  if character == " " {
    continue
  }
  puzzleOutput += character
}
println(puzzleOutput)

只要循环当前的字符是空格,就会跻身if执行continue,此时程序会跳过前面的puzzleOutput += character而回到循环的起头。

        我曾用一句话概括自己个人的翻阅简史:童年一代的紧张,少年时期的空白,大学时期的浪费,导致了我工作以来夹缝里追求阅读。现在阅读对我的话很重大。我从未珍视时间去读书。现在的自家天天起码有五个钟头的读书时间,而这有些时间不自然是汇聚的,很多时候她们是从繁忙的干活中挤压出来的,甚至每日晚上刷牙的时候自己都会顺手拿起一本书来翻看,而每晚睡前我都至少要读一个刻钟的书。         当我养成阅读习惯之后,我给协调制定了漫长的阅读计划和长时间的读书计划。这两种计划相互配合,不断地的鼓励自己阅读更多的书本。明天游人如织人都会采用相电子阅读来代替纸质阅读,我也看电子书,因为很方便,一部无绳话机可以辅导过多本你想要看的书,不过相对于电子阅读来讲自己更爱好纸质阅读,无论自己去哪个地方,都会采取一本心爱的书本带上,而且所到之处必要去新华书店选一本书带回到做记念。因为自己觉着书的市值映现在纸上,而藏书就是自己最大爱好。我家里的百分之九十上述的图书都购买于新华书店。因为自己的寝室很小,所以众多书没有地点存放,于是自己的床头上,窗台上都摆满了书。有人说您为什么要买那么多的书,书可以借来读,可是本人一直不敬重我的金钱去进货书,因为阅读已经成为自己的生活的一有的。我买书就像是给自身自己整容,洗澡这样,我觉得书是在世的消费品。买书读书就是给自己的灵魂做爱抚。         我渴望富有一间大书房,不过当前自己的寝室就是本人的书房。我给自己的书屋写了一副对联。上联是:身居陋室心豁达,下联是:书置简橱道无边。所以我的书屋起名为:简居斋。我高校的时候认识了一位女作家,从当年便深陷于他的文字里面,大学毕业小说写的也是她,答辩的时候我竟说出了这么一句话:“从未碰面,不过我们已是故交。原来自己不知底这些世界上有一个人叫张爱玲,我只晓得那多少个世界上有一个人叫孙本旭,我们俩却意外的貌似。”的确,她不怕张爱玲,我对张爱玲的痴迷已经到了不理智。但凡有“张爱玲”五个字本身便会买。有一遍在航站等飞机,我去机场里的书店逛。突然发现一本杂志封面竟然是张爱玲,我二话不说的就购买了那本杂志。一路上欣喜若狂,如获珍宝。近年来自家的阅读面在不停的恢弘,从农学到历史,从历史学到政治,从经济到思想,还有不少励志经典,人物自传等,这一个书就像是我的意中人。从他们这里我学到了成百上千从未有过知晓的文化,从她们这里我见到了自身没有见过的社会风气。         不但本人自己去新华书店买书,我还告诉自己身边的所有人都要去新华书店买书。难道大家吃了那么多地沟油还不认为够吗?目前的社会如何都得以造假,唯独知识不可以造假。书籍为我们打开了一扇窗,透过这扇窗我们看到了外界的世界,假若这扇窗坏了,外面的社会风气是欠缺的,我们精神取得的是怎样吧?我们失去的远远不止大家所图的这些折扣和价格的优势。我叔叔已经教育自身:“什么都可以是别人的,可是你的学识别人拿不走,什么都足以是假的,不过你的知识假不了。”所以永远不要在念书上压缩,这也是自家文学生的一个看法。学到了就是您的,学不到永远是假的。         我发现越来越有钱的人的越爱读书,像自家如此很穷的人还喜欢阅读的人实在很少。读书不自然会给自己带来财富,不过读书一定会打开你的想想和视野。我爱好读书是因为自己发现读书会让自身变得和颜悦色。我不希罕功利化的翻阅,可是生活中无时无刻少不了功利化的阅读,我认为读书最大的功利不在眼前,而是让大家的明日会更好。         没有人不爱读书,就像我同样,在过去的二十几年,我大部分的年月都用在了读书和腐败之中,当自家忽然醒悟的时候青春已去。我现在所做的事体就是不停地赶路,不停的阅读,希望可以弥补自己往日浪费的时日和失去的光明。         阅读,为本人打开了一扇窗,点亮了一盏灯。在这一个浮躁不安的世界里,阅读让自己更坦然的面对天天,我期望有更多的人方可爱上阅读。

起名 1

Break

break语句会直接退出整个控制流。break可以用在switch言辞或循环中。

用以循环中

当程序执行到break的时候,他会脱离整个循环,而不是回去循环的启幕。就仿佛对先后说:“所有循环已经完结,执行前边的代码吧”。

用于switch

Swift
switch不同意境况的代码段为空,可是有时大家需要配合某些意况,可是却不履行另外代码,此时即使break的用武之地。
下边的事例将不同款式数字转换成整数类型:

let numberSymbol: Character = "三"  // Simplified Chinese for the number 3
var possibleIntegerValue: Int?
switch numberSymbol {
case "1", "١", "一", "๑":
    possibleIntegerValue = 1
case "2", "٢", "二", "๒":
    possibleIntegerValue = 2
case "3", "٣", "三", "๓":
    possibleIntegerValue = 3
case "4", "٤", "四", "๔":
    possibleIntegerValue = 4
default:
    break
}
if let integerValue = possibleIntegerValue {
    println("The integer value of \(numberSymbol) is \(integerValue).")
} else {
    println("An integer value could not be found for \(numberSymbol).")
}

Fallthrough

当你需要switch利用类似 C 语言的穿越特性时,就要用到此紧要字了。

let integerToDescribe = 5
var description = "The number \(integerToDescribe) is"
switch integerToDescribe {
case 2, 3, 5, 7, 11, 13, 17, 19:
    description += " a prime number, and also"
    fallthrough
default:
    description += " an integer."
}
println(description)

其一例子中,大家用了fallthrough根本字。大家想出口三种字符串:"The number N is an integer"
或者
"The number N is a prime number, and also is an integer"。固然这多少个数字不是2,3,5,7,11,13,17,19中的一个,那么依据程序的流水线,就会收获第一种字符串;假如她是内部的一个,就会跻身switch的率先中状态,这一场馆会将description变为"The number N is a prime number, and also"。此时程序执行到了fallthrough,他会忽视下一个情状的规则而施行其代码段。在本例中,程序会跻身默认情状,在description背后添加" an integer"

注意
使用fallthrough后,switch不会再检测下一个场地的尺码,而是直接进入其代码区域实施。通过fallthrough进入的情事不可能带有值绑定;同时已绑定的值在进入的情况代码区域中是不可以动用的。

标签语句

大家能够在循环和switch中嵌套循环和switch,当结构复杂的时候,有时我们想continue外层的循环或者想break某层的switch此时就很不便于了。所以
斯维夫特引入了标签机制,来为循环和switch起名,同时continuebreak末端可以动用相应的名字,来便宜的主宰程序流程。
标签语句是将标签的名字写在行首,前面紧跟一个冒号,之后是唇舌,以while循环为例:

LABEL_NAME: while 条件语句 {
  代码区域
}

下面我们重新玩五次蛇形棋。我们要再改一下规则:

  1. 打闹开首时,你把一个代表你的塑料小人放在1号格子右边的桌面上,这是0号格子的职位;
  2. 当且仅当你站在25号格子,你才胜利,否则执行前面的步骤;
  3. 现行您掷骰子来拿到一个[1,6]里头的数字;
  4. 您沿着棋盘上数字增大的趋向提高该数字个格子,假若走过该数字的格子,你超出了棋盘范围,那么再次来到第2个步骤。例如你现在在0号格子,掷骰子的数字是6,那么就向上6步,停在6号格子上;倘诺现在在24号格子,就要重复掷骰子了。
  5. 现今看望脚下有没有楼梯,假设有,就沿着她爬到连年的格子;
  6. 再度执行第2步。

我们用 Swift 来玩这一个游戏:

let finalSquare = 25
var board = Int[](count: finalSquare + 1, repeatedValue: 0)
board[3] = 8
board[6] = 11
board[9] = 9
board[10] = 2
board[14] = -10
board[19] = -11
board[22] = -2
board[24] = -9

var square = 0
var turns = -1

gameLoop: while square != finalSquare {
    ++turns
    var diceRoll = turns % 6 + 1
    switch square + diceRoll {
    case finalSquare:
        // diceRoll will move us to the final square, so the game is over
        break gameLoop
    case let newSquare where newSquare > finalSquare:
        // diceRoll will move us beyond the final square, so roll again
        continue gameLoop
    default:
        // this is a valid move, so find out its effect
        square += diceRoll
        square += board[square]
    }
}
println("You win after \(turns + 1) turns")

这段代码中大家综合选拔了while循环,switch的值绑定以及where子句。我们把turns设置为-1,在循环开始时进行自增,这样保证continue之后,turns`也会追加1。但是很欠好的是,在这种规则下,我们放置的阶梯会使得你的塑料假人永远也走不到极点,她会疲劳在这条蛇身上。

发表评论

电子邮件地址不会被公开。 必填项已用*标注

网站地图xml地图