Swift的流程控制和函数

流程控制(Control Flow)

For循环

for循环和C语言,OC用法很相像,通常有for()和 for in两种。

遍历时可以利用下划线"_"忽略对值的访问等。

Switch

switch在Swift中则显得灵活的多,不过需要注意的是,不同于C语言,Swift中的Switch不存在隐式的贯穿,每个case里的表达式后面不需要写break则会自动跳出。

如果你想保留这次匹配并向下匹配的话,请使用fallthrough关键字。

每个case里必须要有表达式,每个switch也必须要有default来匹配可能没有预料到出现的情况。

swift中的匹配十分灵活,可以是区间,元组或者是枚举的case等等。

switch也支持值绑定(Value Binding)

在前两个case中,我们声明了x,y两个常量,如果匹配的话,则可以得到前面声明的point常量中的x或者y的值,然后再进行一些操作。

注意到这里没有写default语句,是因为最后一个case相当于default,它包含了所有的情况,而xcode的编译器能够识别,所以并没有报error。

switch在匹配的时候也可以带附加条件进行判断,用到了where关键字。用法类似于SQL语句。

控制转移

控制转移主要用于一些需要跳出这次循环或者立即终止当前访问域的代码的情景。

用到了continue,break,fallthrough,return关键字。

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来声明参数表明他们在函数内部可变。

如果想要保留其修改,则使用inout关键字。传值进来时需要在C语言中的取址符"&"来实现。

函数类型

在Swift中,几乎所有东西都作为一个类型,一个对象呈现。

所以,函数也是一种类型。

以此类推,函数也可以作为参数,作为返回值类型甚至嵌套实现等。

灵活的语法可以让我们在设计上拥有更多的选择。

上面addAnother函数使用了(Int, Int) -> Int 函数类型作为参数。

而后面则是返回一个函数的两种不同实现,后面的实现使用了嵌套函数。

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

以上为本篇博客全部内容,欢迎勘误和讨论。

Swift的流程控制和函数

时间: 2024-10-12 18:12:35

Swift的流程控制和函数的相关文章

变量&流程控制&函数

[Swift初步] 1.第一个swift程序. You don't need to import a separate library for functionality like input/output or string handling. Code written at global scope is used as the entry point for the program, so you don't need a main function. You also don't nee

黑 马 程 序 员_视频学习总结<c语言>----02 printf和scanf函数、基本语句和运算、流程控制、函数、数组、字符串

---------------------- ASP.Net+Unity开发..Net培训.期待与您交流! ---------------------- 一.printf函数 1.在使用peintf函数前必须加入#include <stdio.h>,使用它可以向标准输出设备(比如屏幕)输出数据,其中使用格式是 printf(“字符串”) :或者 printf(“字符串”, 格式符参数): 2.常用的格式符及其含义如图所示 3.格式符还可以添加输出宽度 二.scanf函数 1.在使用scanf函

Swift 程序流程控制

Swift采用类同c语言的流程控制语句,if, for, for-in,  while,  do-while , switch, break, continue .Swift语言的Switch语句自动添加了break效果,这样你可以不用没个case后面再写break.同c语言不同,swift语言的if for while 等,没有括号来括表达式 1: if 语句.if语句只对逻辑值检测.这里不同于c语言的if语句是检测是否 非0. var bFlag:Bool = true if bFlag {

Python学习(二):入门篇:python中流程控制与函数编写

python中流程控制与函数编写 Last Eidt 2014/5/2 转载请注明出处http://blog.csdn.net/jxlijunhao 一,流程控制 1)布尔逻辑 Python中利用True来表示逻辑真,False来逻辑假 not :非 and:与 or   :或 ==  :逻辑等 >>> False==True False >>> False==False True >>> not False True >>> Fal

Go 从入门到精通(三)字符串,时间,流程控制,函数

一.strings和strconv的使用 strings strings.HasPrefix(s string,preffix string) bool:判断字符串s是否以prefix开头 stirngs.HasSuffix(s string,suffix string) bool:判断字符串s是否以suffix结尾 strings.Index(s string,str string) int:判断str在s中首次出现的位置,如果没有出现,则返回-1 strings.LastIndex(s st

php流程控制和函数

一.流程控制 1.选择结构 a)单分支结构 if(条件){条件为真时执行的语句} <?php if(5>3){echo "真";} //结果:真 ?> b)双分支结构 if(条件){条件为真时执行该语句}else{条件不成立时执行该语句} <?php if(5<3){echo "真";}else{echo "假";} ?> c)多分支结构 1)if(条件1){条件1为真时执行该语句} else if(条件2){

【Xcode学C-3】if等流程控制、函数的介绍说明标记分组、#include以及LLVM

一.流程控制:if.while和for循环 (1)if括号中面常常遇到推断是否相等的情况,并且新手常常会把==写成=.所以建议的习惯是把常量放在前面.如a==10.写成10==a,这样就不易犯错. (2)利用for进行递归,但不建议递归太深. (3)详细而言,for循环使用最广泛.for嵌套也非常重要. 二.函数介绍 (1)函数的基本格式 (2)函数的声明和定义的差别,声明一般写在前面.定义写在后面.声明能够同名反复. (3)函数的说明标记分组可用pragma #pragma mark - 这种

黑马程序员——Java基础语法---流程控制与函数

------<a href="http://www.itheima.com" target="blank">Java培训.Android培训.iOS培训..Net培训</a>.期待与您交流! -------       程序控制流 一.程序流程控制 也称语句,主要有:判断结构.选择结构和循环结构. 1. 判断结构——if if语句的三种格式: a)  if(条件表达式) { 执行语句: } b)  if(条件表达式) { 执行语句: } el

20160408-PHP流程控制和函数

流程控制: 一.分支结构 if...else if...elseif...else switch...case...break 二.循环控制 for while 三.中止循环 //结束本层循环 break //结束本次循环 continue 四.中止脚本 exit(); die(); 函数: 语言结构 自定义函数 参数 默认参数 函数返回值 可变个数参数 变量函数 变量作用域 引用参数 回调函数 静态变量 文件包含 递归函数 函数分类: 自定义函数 回调函数 变量函数 递归函数 语言结构: if