从0开始入门学习Swift 06 条件语句、控制转移语句、可选项绑定、隐式展开

1.条件语句

文档描述:

根据特定的条件执行特定的代码通常是十分有用的。当错误发生时,你可能想运行额外的代码;或者,当值太大或太小时,向用户显示一条消息。要实现这些功能,你就需要使用条件语句。

1.1 If语句

if 语句最简单的形式就是只包含一个条件,只有该条件为 true 时,才执行相关代码:

var a = 0
if a == 0 {
	print("判断为true")
}
1.2 If else语句

if 语句允许二选一执行,叫做 else 从句。也就是当条件为 false 时,执行 else 语句:

var b = 1
if b == 0 {
	print("b为0")
} else {
	print("b不为0")
}

Switch Case将会放在后边单独写一篇。


2.条件控制语句

文档描述:

控制转移语句改变你代码的执行顺序,通过它可以实现代码的跳转。Swift 有五种控制转移语句:(这里仅介绍前两个)
continue
break
fallthrough
return
throw

2.1 continue

continue 语句告诉一个循环体立刻停止本次循环,重新开始下次循环。就好像在说“本次循环我已经执行完了”,但是并不会离开整个循环体。

下面的例子把一个小写字符串中的元音字母和空格字符移除,生成了一个含义模糊的短句:

var testtxt = "great minds think alike"
var test01 = ""
for character in testtxt {
    switch character {
    case "a", "e", "i", "o", "u", " ":
        continue
    default:
        test01.append(character)
    }
}
print(test01)
//输出结果
grtmndsthnklk
2.2 break

break 语句会立刻结束整个控制流的执行。break 可以在 switch 或循环语句中使用,用来提前结束 switch 或循环语句。

  • 循环语句中的 break
    当在一个循环体中使用 break 时,会立刻中断该循环体的执行,然后跳转到表示循环体结束的大括号(})后的第一行代码。不会再有本次循环的代码被执行,也不会再有下次的循环产生。
  • Switch 语句中的 break
    当在一个 switch 代码块中使用 break 时,会立即中断该 switch 代码块的执行,并且跳转到表示 switch 代码块结束的大括号(})后的第一行代码。
    这种特性可以被用来匹配或者忽略一个或多个分支。因为 Swift 的 switch 需要包含所有的分支而且不允许有为空的分支,有时为了使你的意图更明显,需要特意匹配或者忽略某个分支。那么当你想忽略某个分支时,可以在该分支内写上 break 语句。当那个分支被匹配到时,分支内的 break 语句立即结束 switch 代码块。
  • 注意
    当一个 switch 分支仅仅包含注释时,会被报编译时错误。注释不是代码语句而且也不能让 switch 分支达到被忽略的效果。你应该使用 break 来忽略某个分支。

下面的例子通过 switch 来判断一个 Character 值是否代表下面四种语言之一。为了简洁,多个值被包含在了同一个分支情况中。 本个实例来源:Swift5.1

let numberSymbol: Character = "三"  // 简体中文里的数字 3

var possibleIntegerValue: Int?

switch numberSymbol {

case "1", "١", "一", "๑":
    possibleIntegerValue = 1
    
case "2", "٢", "二", "๒":
    possibleIntegerValue = 2
    
case "3", "٣", "三", "๓":
    possibleIntegerValue = 3
    
case "4", "٤", "四", "๔":
    possibleIntegerValue = 4
    
default:

    break
    
}
if let integerValue = possibleIntegerValue {

    print("The integer value of \(numberSymbol) is \(integerValue).")
    
} else {
    print("An integer value could not be found for \(numberSymbol).")
    
}
// 输出“The integer value of 三 is 3.”

其他关键字以及更多的具体细则和使用长久将在之后的章节学习到


3.可选项绑定

这显然是与可选项类型有关的,可以理解为代码形式的空合运算符,但是有所区别。

 var f:Int? = 10

    if let value = f 
    {
        print("value的值为\(value)")
    }else{
        print("没有值")
    }

这里需要注意一下, 在var f的时候并没有用!进行解析,因为

     if let constant name = optional 
     {
             statements
     }

这个语法会自动将解析出来的真实的值直接赋过去,在这个语法当中呢,最好是使用常量let,尽量不使用var变量,当然了,前提是直接在这个if语句当中使用

对比一下空合运算符:

var f:Int? = 10
var value = f ?? 400
print(value) 

很显然结果是在空合运算符中,两者值的需要为类型一样;而在可选项绑定当中有一个单独的操作,可以在statement中额外的更改、转换或者打印信息

3.隐式展开

如果明确了可选类型有值,那么就不需要每次都用!来进行解析,直接在定义变量的时候用!进行标记即可

 	var g:Int! = 100
    var h:Int = g //这里注意需要指定类型,如果不指定的话将依然为可选类型。
    print(h)

疑问解答:既然我们已经知道g的值为确定值了那么为什么还需要用到 Int!呢?在默认情况下,当我们的运算结果需要为空的时候,var g:int = 100 这样的写法是无法为空的。而只有在可选类型的情况下,g的值才可以变为nil。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值