流量控制(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. element ui源码解析 -- button篇

    要看源码就得从最简单的开始,button够简单的了,就从他开始吧. 安装依赖后源码目录在:node_modules/element-ui/packages中,可以看到这里的文件夹命名是不是很熟悉,就是 ...

  2. SoC编译HEX脚本(基于RISC-V的SoC)

    SoC编译HEX脚本(基于RISC-V的SoC) 脚本使用 ./compile hello 脚本:设置RISC-V工具链riscv_set_env ############## RISC-V #### ...

  3. [CSS] Use CSS Counters to Create Pure CSS Dynamic Lists

    CSS counters let you create dynamic lists without JavaScript. In this lesson, we will create a multi ...

  4. 解读Java中BigDecimal.ZERO.compareTo()的返回值含义

    Java compareTo() 用法 例如: public static void main(String[] args) {     BigDecimal bnum1, bnum2; bnum1 ...

  5. 亿格瑞A5-hdmi故障了

    http://cn.egreatworld.com/store/product/egreat-a5-4k-uhd-hdr-blu-ray-navigation-hdd-media-player/ a5 ...

  6. [内核编程] Windebug双机调试环境搭建

    Windebug双机调试环境搭建    开始进行内核编程/驱动编程的调试工作是非常烦人的,由于程序运行与内核层不受操作系统的管控,所以容易引起主机蓝屏和崩溃是常有的事.这也就使得内核程序的调试成了一大 ...

  7. LSH︱python实现局部敏感随机投影森林——LSHForest/sklearn(一)

    关于局部敏感哈希算法.之前用R语言实现过,可是由于在R中效能太低.于是放弃用LSH来做类似性检索.学了python发现非常多模块都能实现,并且通过随机投影森林让查询数据更快.觉得能够试试大规模应用在数 ...

  8. oracle listener.ora的host不能使localhost,而应该是该机器名,否则不能用ip地址进行连接

    # listener.ora Network Configuration File: /u01/app/oracle/product/11.2.0/dbhome_1/network/admin/lis ...

  9. thinkphp将excel导入到数据库中

    首先下载phpexcel插件 http://pan.baidu.com/s/1hq56dFm 我用的是thinkphp框架的3.1版本,下载好压缩包,框架中的extend中的vendor文件夹中新建一 ...

  10. js获取浏览器尺寸

    Javascript: alert(document.body.clientWidth);        //网页可见区域宽(body) alert(document.body.clientHeigh ...