全国流感疫情严重,待在家里避免感染才是利人利己。
这几天的网友过于无聊,不是要和家里宠物打麻将、斗地主的,就是数楼下汽车经过的数量。与其虚度光阴,不如大家一起来学习swift5.1吧。
基础语法以及汇编原理
oc与swift汇编的区别
编译分为前端编译、后端编译。下面的图就描述了oc和swift编译的区别:
oc是通过clang前端编译,再到LLVM后端编译成为二进制数据
swift是通过xx前端编译,同样到LLVIM后端编译成为二进制数据
如何查看汇编代码呢
Xcode - Debug-Debug Workflow - Always Show Disassembly
设置好后,打好断点,当运行到当前代码的时候就能看到汇编代码
关于print
想要运行我们第一个程序HelloWorld离不开print函数,关于这个print我们需要注意什么呢?
1.简单字符串
print(“Hello World”)
2.参数
let a = 30
print(a)
3.字符串混合参数
let a = 30
print(“Hello World!\(a)”)
4.是一个函数,可以点进去查看一下(能自定义打印结果格式)
学习语法时多使用Playground
Playground能运行到某一行代码,这样能方便我们查看结果,包括UIKit的视图也能展现出来,只需要导入PlaygroundSupport的框架即可。
import PlaygroundSupport
PlaygroundPage.current.liveView = xxView
常量
- 说明:
1、只能赋值一次
2、值不要求在编译时候确定,但是在使用前需要赋值
3、值在定义的时候如果不能确定,那么需要声明该值的类型。
常见数据类型
- 值类型
- 枚举(Optional)
- 结构体(Bool、Int、Float、Array、String...)
- 引用类型
- 类
元祖类型
看起来和结构体很像,但是不是结构体
let http404Error = (404, ”not found”)
let (code, message) = http404Error
let(code, _) = http404Error
let http404Error = (code:404, describe:”not found”)
字面量
- 字符类型的必须要声明数据类型 ,否则一律按String类型处理
let happy: Character = “”
- 十进制
let a = 125.0 let a = 1.25e2 let a = 12500e-2
- 十六进制
let a = 0xFp2 /* 意味着等于15*2^2 */ let b = oxFp-2 /* 意味着等于15*2^-2 */
- _下划线的使用
/*可以使用下划线增加代码可读性*/ let a = 100_0000
流程控制
if-else
省略小括号;if后判断只能为bool类型while
repeat while
会先执行一次repeat内容,类似do-while-
for
闭区间:1...3
半开区间:1..<3
区间运算符用在数组上:let array = [“Tom”,”Jerry”,”Pinky”] for name in array[0..<3] { print(name) }
单侧区间:让区间朝一个方向尽可能的远(..<2)
带间隔的区间: switch
必须要处理所有情况
复合条件:支持Character、String类型
fallthrough:贯穿到下一个case
区间匹配、元祖匹配
值绑定-
where
加条件可用于for循环也可用于switch语句let numbers = [20,-20,10,-10] var sum = 0 for num in numbers where num > 0 { sum += num }
-
标签语句
outer:for i in 1...4 { for k in 1...4 { if k==3 { continue outer } if i == 3 { break outer } } }