if else

感觉确实没啥好记的,基本语言都那样,值得一提的是swift可以省略小括号if a > 4 { },还有就是条件只能是bool类型,像以前还可以传入整型啥的

while

while 没啥说的,也和C一样,区别在于

do-while 改成了repeat -while了

var num = 0;
repeat {
    print("1");
    num += 1;
}while num < 5

具体代码如图,某种意义来说就是把do 改成了repeat,值得一提swift 不支持 num ++;这种写法,只能num += 1;

for

for就区别有点大了,swift的for是用的区间运算符

1.闭区间运算符... 三个点 a...b 这样使用,a <= 取值 <= b

for i in 2...4{ print(i); } 比如这样,就是闭区间符的基本使用,这个a,b常量变量,还是具体数值都可以,i默认常量,需要修改就定义为var变量

2.半开闭区间运算法 ..<  a <= 取值 < b 用于数组,因为怕越界,所以并不包括上位值

3.单侧区间[a...] [...b] [..<b] 用于数组,不写默认a是0(数组起始位置)不写默认b是数组的上边界,如果都不写默认遍历一个数组

值得注意的是这三种闭区间,在类型上也不是一样的

swift 基础组件封装指南 swift5.3教程_swift 基础组件封装指南

有三种类型,类型就不多说了,值得一提的是Int这个是泛型,也即是表达其中的内容,所以它确实还可以支持其它类型,比如String

let a = "aa"..."ff",这个就是CloseRange<String>的,但String是没法用for的,另外字符和String也是需要转换的,默认都是String,哪怕只是一个字符

stride函数可以加间隔,不必连续不间断

switch

switch和OC区别挺大的

1.case default是不能加{}的

2.不用加break了,以前新手容易犯错的一个地方就是不写break,程序把对应的case向下全执行了一遍,现在不加也不会了,需要贯穿就加fallthrough(个人经验用的地方很少)

3.switch必须处理所有情况,比如枚举处理完了所有可能也不用加default,正常来说就是需要加default处理,也是swift安全的原因,它必须让程序员处理所有的情况,包括我在其它地方看的空值,也是需要处理的,在可能为空的地方

4.switch支持字符和字符串的匹配,以前是不可以的

5.区间匹配和元组匹配 比如判断一个值在不在某个范围可以用到区间匹配,把case写上区间运算符即可,也可以支持元组,元组里面也可以写区间,甚至很多其它匹配方式,有点基础我直接截图记录

swift 基础组件封装指南 swift5.3教程_swift_02

上述_表示忽略,就是任意值都行,甚至可以定义个let a,比如case (let a,1),这个a会得到第一个值

6.where 如果上述的都不能满足使用甚至还可以自定义条件,比如 case (let x ,let y) where x == y: 这样写就是判断如果两者相等则进入case,可以在where后面写上自定义的条件

**插个不属于switch的记录,这个where也可以在for里面使用 for i in 1...4 where i > 2{}这种也是可以的,这样for就只会需要3,4

标签语句 

first: for i in 1...3
{
    for j in 2...4
    {
        if i j == 3
        {
            continue first;
        }
        print(i,j);
    }
}

这样写的话,continue可以控制外层循环,属于一种基本的流程控制