Swift语言中的控制语句和函数

前面说了swift的语法不专门来讲,因为专门学语法会感觉比较无聊,所以就穿插来讲,在讲界面和效果一段时间,又讲一下语法,这样或许会好点。

这里就来讲Swift中的控制语句和函数。


控制语句


控制语句是实现程序结构和逻辑结构的重要语法,和OC一样,甚至和大多数语言一样,Swift语言提供了两种重要的控制语句。

一:分之语句:根据不同的条件执行不同的代码。

二:循环语句:根据条件反复的执行一段代码。


分之语句

分支语句包括if 和 switch 两种,做过开发都知道,这里就不多说了,下面直接将这些语句在Swift语言中的语法和书写规则,看下面


If 条件语句


简单的if语句语法如下:与其他语言中的同,只是书写的形式不一样罢了。

var  age = 20;   (Swift是可以不用;的,当然习惯了用;也没事)

if (age > 18){

print("这家伙成年了")

}

也可以把条件外面的小括号去掉,写成:

if  age > 18 {

print("这家伙成年了")

}

这样输出的结果是一样的。

有了if当然不能忘记了else.看这里

var age = 15

if age > 18{

print("成年了哦")

} else {

print("还是小屁孩啊")

}


当然也还有比较复杂的结构;

if  age > 18{

print ("成年")

} else if age > 12{

print("少年")

}else if age > 2{

print ("童年")

}else{

print("刚断奶吧")

}

多的就不解释了哈,


switch语句

switch语句处理的是某个值在不同情况下触发的方法,这个应该都知道。就不多说了,直接看代码。

var wheather = "晴天"

switch wheather{

    case “晴天”:

    print(“出去玩”)

    case “雨天”:

    print("待在家")

    case "阴天":

    print(”在家睡觉“)

    default:

    print("其他的")

}

这样就会输出打印:出去玩


区间匹配

另外在swift语言中比其他的语言都要强大,它可以表示某个范围和区间。在case语句中可以使用区间匹配,上面的if-else语句中的例子可以改写成这样:

var age  = 200

switch age{

case 0...3:

print("幼年")

case 3...12:

print("童年")

case 12...18:

print("少年")

case 18...100:

print("成年")

default:

print(”老妖怪,不是人啦“)

}

这样就会输出:老妖怪,不是人啦


在switch - case语句中,需要在所有的case表达式后面加上一个default:语句来处理case中不存在的其他情况;


元组

当然我们还可以用元组来匹配多个值;

let boy = (10,"boy")

switch boy {

case (0...20,"boy"):

print ("这是个男孩")

case (21...100,"man")

print ("这是个男人")

default:

print ("其他")

}

这样就会输出:这是个男孩


值绑定

可以在case语句中用变量来接收满足其他条件的元组值,在下面的一个例子中,只要boy的第二个参数满足条件,就会被case中的条件接受并将第一个参数赋值给age。

如果前面的条件都不满足,则会进入最后一个case,同时接收两个值,因为有最后一个case,所以不用default:语句。

let boy = (10,"girl")

switch boy {

   case (let age,"boy"):

    print("男孩: \(age)")

    case (let age,"man"):

    print ("男人: \(age)")

    case (let age,let sex):

   print ("\(sex):\(age)")

}

这样就会输出:girl : 10


where语句

在case语句中,除了以上几种方式外,还有更加灵活的条件判断方式,就是:配合元组和where语句实现复杂的条件:

let boy  = (50,"man")

switch boy {

case  let (age,sex)    where age < 12 && sex != "boy" && sex != "man" :

print ("女孩: \(age)岁")

case let (age,sex)   where age > 12 && sex == "man" :

print ("男人:\(age)岁")

case let (age,sex):

print("\(sex) : \(age)岁")

}

这样就会输出:男人:50岁


语句的作用域

作用域是指独立的代码块,也就是用 { } 包含起来的代码块片段,在代码块中可以使用在这个代码块之前的外部定义的变量;

var str = "ios"

if true {

print("str")  //输出:ios

}

当然要是在 { }里面定义的变量,在 { } 外面是无法使用的:例如这样就会报错

if ture {

var str = "Java"

}

print (str)   //报错

在代码块中可以定义与代码块外面变量名相同的变量:

var str = "swift"

if  true {

var str = "ios"

print (str)  //输出:ios

}

print(str)  //输出:swift


根据就近原则。多的就不说了,都是一些基础的语法,好简单哦,做过开发,这些都是小菜。只是讲一下swift在书写上与其他语言上的差异吧。


循环语句

说到循环无非也就是for循环和while循环。


for循环(for循环和forin循环)

for循环结构如下:

var sum = 0

for var i = 1;i < 100;i ++{

sum +=i

}

print(sum)

输出:5050

forin循环主要用于遍历一个区间,一个数组或者一个字符串中的字符

1.区间:

var sum = 0

for i  in 1...100{

sum += i

}

print(sum)

输出:5050


2.数组

var strarr = ["OC","java","Swift"]

for str in strarr{

print(str + "")

}

输出:OC java Swift

3.字符串

var string = “Java”

for ch in string{

print(ch + " ")

}

输出:J a v a

和其他 语言好像没什么区别,就在书写上不怎么相同,不多说了,简单的过一遍吧。


while 循环(while循环和do-while 循环)

while循环,就是会一直循环执行循环体{ }内的代码,知道while后的条件为false

var sum = 0

var i = 0

while i < 100{

sum +=i

i ++

}

print (sum)

输出:5050


do-while循环是while循环的另一种形式

var sum = 0

var i = 0

do{

sum +=i

i ++

} while i < 100

print(sum)

输出:5050

注意:在while循环中,先是判断条件是否满足,如果满足则进入第一次循环,如果不满足则跳过循环,而do-while循环,不管怎样,都会进入循环体执行第一次循环,然后再进行条件判断,也就是说,do-while至少会执行一次循环体。


跳转语句和块标签

在程序的执行过程中,有的时候需要改变代码的执行顺序,比如,我们在做循环时,遇到某种特殊情况时跳出本次循环或者结束循环,这时候就需要跳转语句对程序的运行进行更多的控制;

1.continue语句

continue语句想必大家都用过,它的作用就是结束本次循环(跳过continue语句之后的代码),并开始下一次循环,好了,我们来看一下代码;

var  strArr = ["hello","word","iOS","OC","Swift"]

for str in strArr{

if str.hasPrefix("w"){

continue

}

print(str + "")

}

输出:hello iOS OC Swift

这段代码就是遍历数组中的字符串,并且过滤掉以“w”开头的字符串


2.break语句

break语句在循环语句中作用就是终止循环并跳出循环。

还是拿上面的代码为例子。

var  strArr = ["hello","word","iOS","OC","Swift"]

for str in strArr{

if str.hasPrefix("w"){

break

}

print(str + "")

}

输出:hello

很明显,输出的结果并不一样,这段代码是指,如果有w开头的字符串,就结束本次循环并且跳出for循环执行以下代码,不再执行for循环。


3.fallthrough语句

这个语句可能在OC的开发中没有使用过,那在这里就来简单的说说这个语句的用法。

Swift语言中switch - case 语句与C语言中的不一样,C语言的case语句具有跟随效应,如果没有break语句,一个case执行完后会继续执行下一个case。

在C语言中,当某一个条件为真时,执行相应的代码块,并且会继续向下执行下面的case语句中的代码,如果想要不执行,就需要加入break语句。

而在Swift中,默认情况下是在每一个case语句的末尾存在一个break语句。如果也想要实现C语言中的效果,那就说到了这个没有见过的语句了。就是在case的代码中加入fallthrough语句了。

var age = 1

switch age {

  case 0...3:

print("幼年")

fallthrough              //case 条件成立,同时,这里有fallthrough语句,所以会继续执行下一个case的代码块


case 3...12:           //虽然这里的case不满足条件,但是依然会执行。

fallthrough           //这里有fallthrough语句,所以程序还会继续跳转到下一个case语句的代码块。

print("童年")         //这在fallthrough后面,所以不会执行到。


case 2...17:

print("少年")         //这里没有fallthrough语句,所以不会继续往下执行


case 18...150:

print("成年")

fallthrough

default:

print("没有这样的怪物啊")

}

输出:幼年   少年


从上面的代码可以看出:

1.如果某一个case条件成立,并且在对应的代码块中有fallthrough语句,则无论下一个case条件是否满足,都会向下执行下一个case语句的代码块;

2.同一个case语句代码块中的fallthrough语句后面的内容将无法执行;

3.所有的case分支中默认存在一个break语句,如果没有fallthrough语句,将推出switch - case语句;



函数

在程序的开发过程中,某些逻辑处理会被经常使用或者在处理复杂问题时,需要将独立的功能块提取出来,供其他地方使用,这就是函数。

说得有点多,做过开发的哪个不知道函数,尽在瞎逼逼扯蛋。:)直接看swift独特的书写格式吧。

func add(a:Int ,b:Int) -> Int{

return a+b

}

print(add(10,20))

输出:30

在Swift中,定义一个函数需要用“func”关键字来修饰,add是函数名,()内是入参,->后面是出参类型。

定义好一个函数后,可以在程序中任意位置使用该函数。


函数的参数

1.无参函数

这个大家都知道,那就是没有参数的函数,

func  show(){

print("显示")

}

show()

输出:显示


2.带参数函数

不文字说明了,直接代码了

func show(str:String){

print("显示:" + str)

}

show("内存不足呀")

输出:显示:内存不足呀


3.参数标签

在上面的例子中定义完一个函数后,在使用时,所有的参数都会以字面量或者实参的方式传递到函数内,当函数的参数过多时,每一个的参数的意义将不能明确;例如下面:

func studentInfo(name:String,age:Int,height:Int,Number:String){

print("姓名:\(name)     年龄:\(age)   身高:\(height)    电话号码:\(Number)")

}

studentInfo("王八",25,175,"13838389438") 

输出:姓名:王八    年龄:25    身高:175    电话号码:13838389438


在调用函数时,25和175一看过去,我们并不知道他们具体的意义。为了解决这个问题,所以就引入了参数标签。也就是说,给每个参数指定一个名字,在函数调用时,可以通过标签来了解对应参数的具体含义。

func studentInfo(sName  name:String, sAge  age:Int,  sHeight  height:Int,  sPhoto   Number:String){

print("姓名:\(name)     年龄:\(age)   身高:\(height)    电话号码:\(Number)")

}

studentInfo(sName:"王八", aAge: 25, sHeight:175,sPhone:"13838389438") 

输出:姓名:王八    年龄:25    身高:175    电话号码:13838389438


这样在函数调用的时候,每个参数就能显示对应参数的名称。另外,如果在外部使用的参数标签与函数内使用的常量名称一致,可以用“#”号来表示。

func studentInfo(#name:String , #age:Int , #height:Int , #Number:String){

print("姓名:\(name)     年龄:\(age)   身高:\(height)    电话号码:\(Number)")

}

studentInfo(name:"王八",  age:25,  height: 175,  Number: "13838389438") 

输出:姓名:王八    年龄:25    身高:175    电话号码:13838389438


函数的返回值

这个就不多说了,就是调用函数后,函数会有一个返回值返回。

func   add (a:Int,  b:Int)->Int{

return (a+b)

}

add(20,30)

输出:50


函数的变量参数







今晚先到这。。。。。。。。。。。。。。。。。。。。。。


   

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值