流量控制(Control Flow)


For周期

for骑自行车和C语言,OC用法很相似,平时for()和 for in两种。
遍历可以使用下划线"_"略对值的訪问等。




Switch

switch在Swift中则显得灵活的多。只是须要注意的是。不同于C语言,Swift中的Switch不存在隐式的贯穿。每一个case里的表达式后面不须要写break则会自己主动跳出。
假设你想保留这次匹配并向下匹配的话,请使用fallthroughkeyword。
每一个case里必需要有表达式,每一个switch也必需要有default来匹配可能没有预料到出现的情况。
swift中的匹配十分灵活,能够是区间,元组或者是枚举的case等等。

switch也支持值绑定(Value Binding)


在前两个case中,我们声明了x,y两个常量,假设匹配的话,则能够得到前面声明的point常量中的x或者y的值,然后再进行一些操作。
注意到这里没有写default语句。是由于最后一个case相当于default。它包括了全部的情况,而xcode的编译器可以识别。所以并没有报error。


switch在匹配的时候也能够带附加条件进行推断,用到了wherekeyword。

使用方法类似于SQL语句。



控制转移


控制转移主要用于一些须要跳出这次循环或者马上终止当前訪问域的代码的情景。

用到了continue,break,fallthrough,returnkeyword。


continue
用于停止本次循环迭代


这里每当匹配到l,o或者空格时。马上进行下次for循环。


break则同其它语言使用方法一样。跳出for,switch,while等流程控制语句。

fallthrough属于贯穿。在case中运行完statement继续向下匹配运行。

带标签的语句


能够给一些流程控制语句前加上标签。来进行标识。
标识语句的标准写法和使用方法:


这里的break不再跳出本次switch,而是跳出了整个while循环。这里PrimeLoop这个标签起到了作用。


函数


在swift中,函数眼下不再我们像OC一样去用+-来声明方法。而是使用func。
在swift中。我们调用函数的时候能够像其它语言一样,忽略起返回值。




这里在第二个函数体中。我们并没实用到第一个函数中的Int型的返回值。



Swift的元组也能够作为函数的返回值。


这里我们获取了一个字符串的长度以及当中表示数字的字符个数。

并用一个元组获取其各自的值。


func在定义參数的时候能够为方便使用函数的人更清楚參数的含义。能够在前面加"#"来表明外部參数名。



这里在使用函数的时候我们就能看到參数前面的參数名提示了。

有的时候我们在定义參数的时候想给其赋一下默认值。

当我们赋值的时候,swift默觉得其加入了外部參数名。




可变參数
Swift中的函数也有可变參数。注意的是一个函数參数最多仅仅有一个可变參数,并且必须是參数表的最后一个。



常量參数和变量參数
Swift中的參数默觉得常量。而且不能对外部值进行改动。

參数仅仅是对该值的一个值拷贝,生命周期也为函数内部。

我们能够用var来声明參数表明他们在函数内部可变。


假设想要保留其改动,则使用inoutkeyword。传值进来时须要在C语言中的取址符"&"来实现。



函数类型
在Swift中。差点儿全部东西都作为一个类型。一个对象呈现。
所以,函数也是一种类型。
以此类推,函数也能够作为參数,作为返回值类型甚至嵌套实现等。
灵活的语法能够让我们在设计上拥有很多其它的选择。



上面addAnother函数使用了(Int, Int) -> Int 函数类型作为參数。
而后面则是返回一个函数的两种不同实现。后面的实现使用了嵌套函数。

好像忘了说,函数使用->来表明返回值。




以上本博客所有内容,欢迎勘误和讨论。

版权声明:本文博主原创文章,博客,未经同意不得转载。

Swift过程控制和功能的更多相关文章

  1. Swift - 邮件发送功能的实现

    使用MessageUI.framework框架除了可以发送短信,还能发送Email,步骤如下: (1)首先判断设备是否有发送邮件功能 (2)如果设备允许发送邮件,创建一个MFMailComposeVi ...

  2. Swift 4 放大镜功能实现

    先上效果图吧,框框被限制在了image内了. 这个feature我把它用在了我的app里了,博客写得不容易,来star下啦

  3. 【swift学习笔记】四.swift使用Alamofire和swiftyJson

    Alamofire是AFNetworking的swift版本,功能灰常强大. github:https://github.com/Alamofire/Alamofire SwiftyJSON是操作js ...

  4. 窥探Swift之函数与闭包的应用实例

    今天的博客算是比较基础的,还是那句话,基础这东西在什么时候都是最重要的.说到函数,只要是写过程序就肯定知道函数是怎么回事,今天就来讨论一下Swift中的函数的特性以及Swift中的闭包.今天的一些小实 ...

  5. Swift - enumerateObjectsUsingBlock的用法

    enumerateobjectsusingblock:不是Array的方法在NSArray使用.如果你想使用它,你需要一个实例NSArray而不是Array. import Foundation va ...

  6. Openstack Swift中间件编写

    关于openstack swift的资料可以看这里,这里还有这里. 准备环境 从零开始接触的同学可以先从swift的all in one部署开始学习,在本机搭建好swift环境就可以进行简单的测试了. ...

  7. swift学习(二)--基本运算符、字符串、集合操作

    在这一篇博客里面,我想要介绍一下swift里面一些常用的基本运算符,还有涉及到的字符串,集合操作.你会发现在swift里面还是有许多其他语言所不具有的特性运算操作的. 首先最基本的+,-,*,/,&g ...

  8. Swift项目兼容Objective-C问题汇总

    Swift项目兼容Objective-C问题汇总 转载自 http://www.cocoachina.com/swift/20150608/12025.html 本文是投稿文章,作者:一叶(博客)欢迎 ...

  9. swift 与 OC 混合编程

    原文地址:http://www.cocoachina.com/swift/20150608/12025.html 一.解决问题 Swift项目需要使用封装好的Objective-c组件.第三方类库,苹 ...

随机推荐

  1. windows版 nginx配置反向代理实例教程 跳转tomcat和php网站

    抄自 https://www.cnblogs.com/j-star/p/8785334.html 个人理解 nginx端口设置为80,简称n tomcat端口设置为其他,例如8080,简称t php网 ...

  2. springboot下静态资源的处理(转)

    在SpringBoot中有默认的静态资源文件相关配置,需要通过如下源码跟踪: WebMvcAutoConfiguration-->configureResourceChain(method)-- ...

  3. 【t041】距离之和

    Time Limit: 1 second Memory Limit: 128 MB [问题描述] 在一条数轴上有N头牛在不同的位置上,每头牛都计算到其它各头牛的距离.求这n*(n-1)个距离的总和. ...

  4. 交换排序(java)

    package exchange_sort; import java.util.Random; /*各类交换排序  * ------数据存储范围1~s.length-1 ------  *主要包含   ...

  5. Normal Equation of Computing Parameters Analytically

    Normal Equation Note: [8:00 to 8:44 - The design matrix X (in the bottom right side of the slide) gi ...

  6. [Angular2] Map keyboards events to Function

    The idea is when we tape the arrow keys on the keyboard, we want the ball move accodingly. const lef ...

  7. iOS开发RunLoop学习:三:Runloop相关类(source和Observer)

    一:RunLoop相关类: 其中:source0指的是非基于端口por,说白了也就是处理触摸事件,selector事件,source1指的是基于端口的port:是处理系统的一些事件 注意:创建一个Ru ...

  8. js课程 1-5 js如何测试变量的数据类型

    js课程 1-5 js如何测试变量的数据类型 一.总结 一句话总结:用typeof()方法. 1.js如何判断变量的数据类型? 用typeof()方法. 13 v=10; 14 15 if(typeo ...

  9. 使Sublime Text支持除UTF8外多种编码 - ConvertToUTF8

    前几天,在使用了Sublime Text多天之后,感觉完全可以代替系统自带记事本,所以就通过其打开了一个记事本文件,但是打开之后尽然是乱码,在思考了一下之后想到记事本的编码是ANSI编码,那么这就应该 ...

  10. c# 调用ArcEngine的GP工具

    转自原文c# 调用ArcEngine的GP工具,AE调用GP工具 IAoInitialize m_AoInitialize = new AoInitializeClass(); esriLicense ...