流量控制(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. Maven学习总结(16)——深入理解maven生命周期和插件

    在项目里用了快一年的maven了,最近突然发现maven项目在eclipse中build时非常慢,因为经常用clean install命令来build项目,也没有管那么多,但最近实在受不了乌龟一样的b ...

  2. Hadoop笔记(一)

    1.大数据的概述 大数据:巨量数据.海量数据,首先在数据的量上达到一定的规模,首先是人或者计算机在不合理时间内是不能够实现的数据量. 2.特点:数据量比较大,数据类型多样化.处理速度问题 3.大数据平 ...

  3. (转)把Sublime Text 2 加入右键菜单(带图标),Edit with Sublime Text

    转自 http://www.turen.me/archives/509 Sublime Text 2 是现在很受大家欢迎的编辑器了,不仅是在web前端,在书定简单的php.Js等代码时,也是相当的好用 ...

  4. 高速在MyEclipse中打开jsp类型的文件

    MyEclipse打开jsp时老是要等上好几秒,嗯嗯,这个问题的确非常烦人,事实上都是MyEclipse的"自作聪明"的结果(它默认用Visual Designer来打开的),进行 ...

  5. 目前以lib后缀的库有两种,一种为静态链接库(Static Libary,以下简称“静态库”),另一种为动态连接库(DLL,以下简称“动态库”)的导入库(Import Libary,以下简称“导入库”)。静态库是一个或者多个obj文件的打包

    前以lib后缀的库有两种,一种为静态链接库(Static Libary,以下简称“静态库”),另一种为动态连接库(DLL,以下简称“动态库”)的导入库(Import Libary,以下简称“导入库”) ...

  6. blob-照片转换与展示

    File转java.sql.Blob(照片)Struts2 public Blob photos(File zp) { Blob photo=null; try { FileInputStream f ...

  7. Windows10终端优化方案:Ubuntu子系统+cmder+oh-my-zsh

    原问地址:https://zhuanlan.zhihu.com/p/34152045 最近从MacBook换到了种草已久的Surface Book 2,而我的工作环境也自然要从macOS换到Windo ...

  8. HDU 1045 Fire Net(行列匹配变形+缩点建图)

    题意:n*n的棋盘上放置房子.同一方同一列不能有两个,除非他们之间被墙隔开,这种话. 把原始图分别按行和列缩点 建图:横竖分区.先看每一列.同一列相连的空地同一时候看成一个点,显然这种区域不可以同一时 ...

  9. [CSS] Conditionally Apply Styles Using Feature Queries @supports

    While browsers do a great job of ignoring styles they don’t understand, it can be useful to provide ...

  10. Struts(22)标签库具体解释

    要使用Struts2的标签,仅仅须要在JSP页面加入例如以下一行定义就可以: <%@ taglib prefix="s" uri="/struts-tags&quo ...