流量控制(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. 毕业两年做到测试经理的经历总结- 各个端的自动化,性能测试结合项目具体场景实战,分析客户反馈的Bug

    前言 最近看到行业的前辈都分享一些过往的经历来指导我们这些测试人员,我很尊敬我们的行业前辈,没有他们在前面铺路,如今我们这帮年轻的测试人估计还在碰壁或摸着石头过河,结合前辈们的经验,作为年轻的测试人也 ...

  2. Java中关于static语句块的理解

    Java中关于static语句块的理解 一.static块会在类被加载的时候执行且仅会被执行一次,一般用来初始化静态变量和调用静态方法. 实例一 public class A{ String name ...

  3. [Android 4.4.2] 泛泰A870 Mokee4.4.2 20140531 RC1.0 by syhost

    欢迎关注泛泰非盈利专业第三方开发团队 VegaDevTeam  (本team 由 syhost suky zhaochengw(z大) xuefy(大星星) tenfar(R大师) loogeo cr ...

  4. SQL Server 2008 Tempdb 数据库迁移

    1.首先检查数据文件位置及名称 SELECT name,physical_name FROM sys.database_files 2.迁移 USE master; GO ALTER DATABASE ...

  5. [WASM] Create and Run a Native WebAssembly Function

    In this introduction, we show a simple WebAssembly function that returns the square root of a number ...

  6. poj1564 Sum It Up (zoj 1711 hdu 1258) DFS

    POJhttp://poj.org/problem?id=1564 ZOJhttp://acm.zju.edu.cn/onlinejudge/showProblem.do?problemId=711 ...

  7. stm32的pwm波

  8. javascript数组全排列,数组元素所有组合

    function permute(input) { var permArr = [], usedChars = []; function main(input){ var i, ch; for (i ...

  9. 群晖synology的Video Station无法通过浏览器在线播放视频

    群晖synology的Video Station无法通过浏览器在线播放视频 http://www.hangge.com/blog/cache/detail_419.html

  10. Java工具类:给程序增加版权信息

       我们九天鸟的p2p网贷系统,基本算是开发完成了.   现在,想给后端的Java代码,增加版权信息.   手动去copy-paste,太没有技术含量. 于是,写了个Java工具类,给Java源文件 ...