importFoundation


//***********************************************************************************************

//1.Control Flow(控制流)

//_______________________________________________________________________________________________

//介绍

//除了C里面的for条件递增循环,Swift还增加了for-in循环,用来更加简单的遍历数组,字典,范围,字符串和其他序列类型

//Swift中的switch语句也更多的用在Cswitch语句的不需要写breakswitch语句并且包含范围匹配,元组和投到一个特定的类型


//2.For Loopfor循环)

//For-In

forindexin1...5{ //最简单的for in语句来实现循环

println(index)

}


//_______________________________________________________________________________________________

//当不需要使用循环中的值的时候,可以使用_来替代index

letbase =3

letpower =10

varanswer =1

_...power{ //使用_来替代index元素实现循环

answer*=base

}

println("\(base)to the power of)isanswer)")


//使用for in获取数组中的元素

letnames = ["Listo","Pin"]

fornameinnames{

println("Hello,\(name)!")

}


//使用for in获取字典中的元素

letnumberOfLeg = ["Spider":8,"Ant":6,27)">"Cat":4]

for(animalName,legCount)numberOfLeg{

"\(animalName)s have\(legCount)legs")

}


//使用for in获取字符串中的每个字符

forcharacterin"Hello"{

println(character)

}


//传统的for循环

forvarindex =0; index <3; ++index{

"index is\(index)")

}


//3.While Loopwhile循环)

//while的使用

var number =2 //while循环举例

whilenumber>=1{

println("nice")

number--

}


//do while的用法

varnumber1 =2

do{

)

number1--

}whilenumber1>=1


//4.Conditional Statements(条件语句)

//if语句实现条件判断

vartemperatureInFahrenheit =30

iftemperatureInFahrenheit<=32{

("It's very cold,consider wearing a scarf")

}


//if else语句实现条件控制

temperatureInFahrenheit=40

("It's very cold. consider wearing a scarf")

}

else("It's not that cold.wear a t-shirt is ok" //if else if else语句实现条件控制

90

)

}

else86("It's really warm.Don't forget to wear a sunscreen"("It's not that cold.wear a t-shirt" //Swtch特性:与C语言和Objectve-C中的switch语句不同,在swift中,当匹配case块中的代码执行完毕后,程序会终止switch语句,而不会继续进行case块。也就是不需要显式的添加break语句,但是每个case必须包含至少一条语句,否则无效


//简单的switch语句应用举例

letsomeCharacter:Character="e"

switchsomeCharacter{

case"a""e""i""o""u": //switch语句中的case语句条件并列的时候,用逗号隔开即可

someCharacter)is a consonant")

"b":

)is a consontant")

default)is not a vowel or a consonant" //switch语句中应用范围匹配

count =3_000_000_000_000

countedThings ="stars in the Milky Way"

varnaturalCount:String

switchcount{ //switch语句中加入范围判断

case0:

naturalCount="no"

case1...3:

"a few"

4...9:

"several"

10...99:

"tens of"

100...999 naturalCount="hundreds of"

1000...999_999="thousands of"

default="millons and millons of"

}

"There are\(naturalCount)\(countedThings" //switch语句中使用元组

letsomePoint = (1,1)

somePoint{

case(0,216)">0):

("(0,0) is at the origin")

case(_,0)">("(somePoint.),0) is on the x-axis"_):

ottom:0px; padding-top:0px; padding-bottom:0px; font-size:11px; font-family:Menlo; color:rgb(209,)) is on the y_axis"case(-2...2,-2):

)) is inside the Box")) is outside the Box" //值绑定

letanotherPoint = (20) //case块的模式允许将匹配的值绑定到一个临时的变量或者常量上,这些常量或者变量在该case块里就可以被引用了,这就是值绑定

anotherPointletx,0)">("on the x-axis with an x value of\(x)"lety):

("on the y-axis with a y value of\(y)"caselet(x,y):

("somewhere else at (\(x),0)">\(y))" //where语句

letyetAnotherPoint = (1) //使用where添加额外的判断条件

yetAnotherPointwherex == y:

\(y)) is on the line x == y"wherex == -y:

\(y)) is on the line x == -y"\(y)) is just some arbitrary point" //5.Control Transfer Statements(控制转移语句)

//使用continue语句跳过本次迭代

puzzleInput ="great minds think alike"

varpuzzleOutput =""

puzzleInput{

switchcharacter{

"a":

continue //只要匹配到元音字母或者空格字符的时候,就调用continue语句使本次迭代结束,从开始下次的循环迭代

:

puzzleOutput.append(character)

}

}

(puzzleOutput //使用break语句跳出框架

puzzleInput1 ="great minds think alike"

varpuzzleOutput1 =forcharacter1puzzleInput1{

switchcharacter1{

break //当在switch代码快中使用break语句时,只要匹配到元音字母或者空格字符的时候,就调用break语句使跳出switch语句,继续进行循环进行循环;当在for循环中使用break语句时,直接跳出循环不在进行循环

puzzleOutput1.append(character1)

}

}

(puzzleOutput1 //综合使用控制转移语句

letnumberSymbol:""

varpossibleIntegerValue:Int?

numberSymbol"1"" possibleIntegerValue1

"2""2

"3""3

"4""4

:

break break来跳出switch

}

integerValue =possibleIntegerValue("The integer Value ofnumberSymbol\(integerValue)"("An integer value Could not be found for //6.Fallthrough

//使用fallthrough并列两句case

letintegerToDescribe =5

vardescription ="The number\(integerToDescribe)is "

integerToDescribe3,216)">5,216)">7,216)">11,216)">13,216)">17,216)">19:

description+="a prime number,and also"

fallthrough

+=" an integer"

}

() //这个例子定义String类型的变量description并且给它设置了一个初始值。函数使用switch逻辑来判断integerToDescribe变量的值。当integerToDescribe的值属于列表中的质数之一的时候,该函数添加一段文字在description后,来表明这个数字是一个质数。然后它使用fallthrough关键字来"落入" default分支中,default分支添加一段额外的文字在description后面,然后代码结束


//7.Labeled Statements(标签语句)

//Swift中,我们可以在循环体和switch代码块中嵌套循环体和swith代码块来创造复杂的控制流结构。然而循环体和switch代码块两者都可以使用break语句来提前结束整个方法体。因此显式的指名break语句想要终止的是那个循环体或者switch代码快,这样会很有用。显式的声明continue语句想要影响那一个循环体也会很有用。

//为了实现这个目的,你可以使用标签来标记一个循环体或者switch代码块,当使用break或者continue时,带上这个标签,可以控制该标签代表的对象的中断或者执行。

//产生一个带标签的语句是通过在该语句的关键字的同一行前面放置一个标签,并且该标签后面需要带着一个冒号。以while循环体举例

/*

label name: while condition{

statements

}

*/


//标签语句实例代码

varscore = [97,216)">87,216)">34,216)">100,216)">88,216)">49,216)">4,216)">80]

First:forsscore{

switchs/10{

10:

continue

9:

"\(s)分为优秀")

8:

分为良好7:

分为中等")

case: //题目要求碰到异常的分数终止循环而不是跳过,当不添加标签使用break时,我们终止的是switch语句,而不是for循环,所以我们需要标签语句来标签for循环然后break for循环的标签

breakFirst

:

分为不及格")

}

}

寒城攻略:Listo 教你 25 天学会 Swift 语言 - 07 Control Flow的更多相关文章

  1. ios – 无法识别的选择器发送到实例NSTimer Swift

    解决方法让updateTime成为一个类方法.如果它是在一个纯粹的Swift类中,你需要在@objc前面说明该方法的声明,如:

  2. ios – 类型推断(自动类型检测)如何在swift中工作?

    LLVM如何检测变量是一个字符串?

  3. ios – Swift可选项:语言问题,还是做错了什么?

    应该有可选的类型;type是但是,如果我这样做,它的工作原理:它似乎是基本的替代,但我可能会遗漏一些语言的细微差别.谁能对此有所了解?之后就像暧昧一样,更多,这是我的解决方案:这适用于所有非对象Swift对象,包括Swift字符串,数字等.感谢Viktor提醒我String不是Swift中的对象.如果您知道值的类型,您可以替换任何?使用适当的可选类型,如String?

  4. ios – 覆盖Swift中的超类委托

    我正在开发一个包含两个UIViews的Swift(v1.2)项目.MyView和MyViewSubclass.MyView有一个委托,我想在MyViewSubclass中覆盖它作为一个子协议,类似于UITableViews有一个UITableViewDelegate,它也符合超级uiscrollviewdelegate.我的第一个想法是覆盖超类属性,但这会导致编译器错误,因为子类不能覆盖具有不同类

  5. ios – 在Obj-C中使用Switch语句

    下面是一个Switch/Case语句,当无法发送电子邮件时显示错误消息.在大多数情况下,一切似乎都是正确的,但是当我将UIAlertView放入Switch语句时,我在Xcode中收到错误:为什么在将代码放入案例时会产生错误?解决方法把它放在括号中:

  6. ios – 我可以在swift中将字符串转换为代码块吗?

    有没有办法将字符串转换为代码块?

  7. ios – Swift:方法重载只在返回类型上有所不同

    我一直在看Swift类,其中定义了两种方法,它们的返回类型不同.我不习惯使用允许这种语言的语言,所以我去寻找描述它如何在Swift中工作的文档.我在任何地方都找不到任何东西.我本来期望在Swift书中有关于它的整个部分.这记录在哪里?

  8. ios – 字符串资源Xcode swift

    我是iOS开发和Swift语言的新功能.而且我尝试制作简单的iOS应用程序,我需要在应用程序中使用一些字符串资源.当然,我可以将这个字符串放在我的*.swift文件中作为常量,但我认为这是一个坏的方法.我该怎么做?

  9. ios – 如何使用新的Apple Swift语言发布JSON

    本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请发送邮件至dio@foxmail.com举报,一经查实,本站将立刻删除。

  10. xcode – Swift:如何在Playground中绘制UI?

    如何绘制UI(矩形,按钮,视图等)并实时查看结果,如下所示:https://devimages.apple.com.edgekey.net/swift/images/swift-screenshot.jpg?所有我可以看到的是控制台输出,但我找不到显示视觉显示(Balloons)和图表的选项.解决方法当您有一个像for循环的东西,或者当鼠标悬停在结果区域时,您可以在“快速查找”或“圈”/“加号”按

随机推荐

  1. Swift UITextField,UITextView,UISegmentedControl,UISwitch

    下面我们通过一个demo来简单的实现下这些控件的功能.首先,我们拖将这几个控件拖到storyboard,并关联上相应的属性和动作.如图:关联上属性和动作后,看看实现的代码:

  2. swift UISlider,UIStepper

    我们用两个label来显示slider和stepper的值.再用张图片来显示改变stepper值的效果.首先,这三个控件需要全局变量声明如下然后,我们对所有的控件做个简单的布局:最后,当slider的值改变时,我们用一个label来显示值的变化,同样,用另一个label来显示stepper值的变化,并改变图片的大小:实现效果如下:

  3. preferredFontForTextStyle字体设置之更改

    即:

  4. Swift没有异常处理,遇到功能性错误怎么办?

    本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请发送邮件至dio@foxmail.com举报,一经查实,本站将立刻删除。

  5. 字典实战和UIKit初探

    ios中数组和字典的应用Applicationschedule类别子项类别名称优先级数据包contactsentertainment接触UIKit学习用Swift调用CocoaTouchimportUIKitletcolors=[]varbackView=UIView(frame:CGRectMake(0.0,0.0,320.0,CGFloat(colors.count*50)))backView

  6. swift语言IOS8开发战记21 Core Data2

    上一话中我们简单地介绍了一些coredata的基本知识,这一话我们通过编程来实现coredata的使用。还记得我们在coredata中定义的那个Model么,上面这段代码会加载这个Model。定义完方法之后,我们对coredata的准备都已经完成了。最后强调一点,coredata并不是数据库,它只是一个框架,协助我们进行数据库操作,它并不关心我们把数据存到哪里。

  7. swift语言IOS8开发战记22 Core Data3

    上一话我们定义了与coredata有关的变量和方法,做足了准备工作,这一话我们来试试能不能成功。首先打开上一话中生成的Info类,在其中引用头文件的地方添加一个@objc,不然后面会报错,我也不知道为什么。

  8. swift实战小程序1天气预报

    在有一定swift基础的情况下,让我们来做一些小程序练练手,今天来试试做一个简单地天气预报。然后在btnpressed方法中依旧增加loadWeather方法.在loadWeather方法中加上信息的显示语句:运行一下看看效果,如图:虽然显示出来了,但是我们的text是可编辑状态的,在storyboard中勾选Editable,再次运行:大功告成,而且现在每次单击按钮,就会重新请求天气情况,大家也来试试吧。

  9. 【iOS学习01】swift ? and !  的学习

    如果不初始化就会报错。

  10. swift语言IOS8开发战记23 Core Data4

    接着我们需要把我们的Rest类变成一个被coredata管理的类,点开Rest类,作如下修改:关键字@NSManaged的作用是与实体中对应的属性通信,BinaryData对应的类型是NSData,CoreData没有布尔属性,只能用0和1来区分。进行如下操作,输入类名:建立好之后因为我们之前写的代码有些地方并不适用于coredata,所以编译器会报错,现在来一一解决。

返回
顶部