编译流程
Swift code --> Swift AST -->Raw Swift IL -->Canonical Swift IL-->LLVM IR -->Assembly-->Executable
关于常量
- 只能赋值一次
- 它的值不要求编译时期确定,但使用之前必须赋值1次
var num = 10
num += 20
let age = num
print(age)
func getAge() -> Int {
return 10
}
let theAge = getAge()
print(theAge)
关于标识符
- 标识符(比如常量名,函数名,变量名)几乎可以使用任何字符
func 🐂🌞() {
print("666")
}
🐂🌞()
let 👽 = 124
var 👀 = 888
- 标识符不能以数字开头 不能包含空白字符,制表符,箭头等特殊字符
值类型(value type) | 枚举 | optional |
值类型(value type) | 结构体 | bool ,int ,float,double,character,string,array,dictionary,set |
引用类型(reference type) | 类 |
- 整数类型:Int8,Int16,Int32,Int64 Uint8,Uint16,Uint32,64Uint
- 在32bit平台 int等价于Int32 ;64bit int等价于int64
- 整数的最值 UInt8.max,Int16.min
- 一般情况下,都是直接使用Int即可
- float 32 精度只有6位 ;double 64位 精度至少15位
//默认是double
let letFloat:Float = 30.0
let letDouble = 30.0
//布尔
let bool = true //false
//字符串
let string = "小马哥"
//字符(可存储ASCII字符,Unicode字符)
let character:Character = "🐶"
//整数
let intDecimal = 17 //十进制
let intBinary = 0b10001 //二进制
let intOctal = 0o21 //八进制
let intHexadecimal = 0x11//十六进制
//浮点型
let doubleDecimal = 125.0 //十进制,等价于1.25e2 = 1.25*10^2
let doubleDecimal = 0.0125 //1.25e-2 = 1.25*10^-2
let doubleHexadecimale12 = 0xFp2//十六进制,意味着15*2^2
let doubleHexadecimal2 = 0xFp-2 //十六进制,15*2^-2
//数组
let array = [1,2,3,3]
//字典
let dic = ["age":18]
- 整数和浮点数可以添加额外的零或者添加下划线来增强可读性
100_0000
0001243.456
1_000_000_000.909090
//整数转换(两个不同类型的数据相互运算要转换成同样的类型)
let int1:UInt16 = 2_000
let int2:Uint8 = 1
let int3 = int1 + UInt16(int2)
//整数,浮点型转换
let int = 3
let double = 0.2323
let pi = Double(int) + double
let intPi = Int(pi)//强转double到int
//字面量可以直接相加,因为数字字面量本身没有明确的类型
let result = 3 + 0.236728378
//元祖
let error = (404,"not found")
let (sta1,sta2) = error//把元祖赋值给元祖
print(sta1)
let (sta1,_)=error//只赋值第一个元素,下划线表示忽略
let abc = (statusCode:200,msg:"成功")
print(abc.statusCode)
网友评论