Swift5.1 入门(1)
2019-06-20 本文已影响44人
HChase
1. 常量和变量
用 var 定义变量,let 定义常量,系统自动推断出变量或常量类型;
func test() {
var a = 52.0
let b = 10
a = a + Double(b)
print("\(a) \(b)")
}
- 常量(let) 只能赋值一次;
- 常量(let) 的值不要求在编译时确定,但是在使用之前,必须已经赋值一次;
func test1() {
let b: Int
b = 40
print(b)
}
-
常量 和 变量 在初始化之前不能被使用,否则报错;
2. 标识符
-
Swift 与 oc 不同,Swift 的标识符(变量名,常量名,函数名)几乎可以使用任何字符表示;
-
标识符 不能以数字开头,不能包含空格,制表符,箭头等特殊字符;
func 😩🐂() {
let 😊: Int = 10
var 🧨: Float = 12.0
🧨 = 40.0
print(😊)
print(🧨)
}
3. 常见的数据类型
- 整形类型包含: Int8、Int16、Int32、Int64、UInt8、UInt16、UInt32、UInt64;
- 使用 Int 定义变量或常量整形,系统会自动判断整形类别,32位系统中是Int32,64位系统中是Int64;
4. 字面量
- bool 布尔值
let b = true
let b = fase
- String 字符串
let a = "abc123"
- Character 字符 (可存储ASCII字符、Unicode字符)
let a: Character = "a"
let a: Character = "🐶"
- Int 整形
let a = 10
let a: Int = 10 //十进制
let a = 0b1001 //二进制
let a = 0o34 //八进制
let a =0xff //十六进制
- 浮点型
let a = 12.8 //十进制
let a = 0xfp2 //十六进制,等价于十进制15 * 2^2 = 60.0
let a = 0xfp-2 //十六进制,等价于十进制15 * 2^-2 = 3.75
- 数组
let a = [1,2,3,4,5]
- 字典
let a = ["age": 20, "height": 170]
5. 类型转换
- 格式:类型(变量\常量)
let a: Int = 20
let b: Float = Float(a)
- 类型相同,才能进行运算
let a: Int = 20
let b: Float = 30.0
let c: Float = b + Float(a)
// 字面量可以直接相加,因为数字字面量本身没有明确的类型
let d = 5 + 1.67
6. 元组(Tuple)
元组的几种定义方式:
// 方式1
let httpStatus = (200, "request success")
print("\(httpStatus.0)")
// 方式2
let (statusCode, response) = (200, "request success")
print("\(statusCode) \(response)")
// 方式3
let (statusCode, _) = (200, "request success")
print("\(statusCode) ")
// 方式4
let httpStatus = (statusCode: 200, response: "request success")
print("\(httpStatus.statusCode) \(httpStatus.response)")
7. swift的编译过程
swift 编译过程swift的编译过程:
- swift code : swift 源代码;
- swift ast : 将swift 源代码生成语法树 ;
swiftc-dump-ast main.swift
- raw Swift IL: 生成最简洁的SIL代码;
swiftc-emit-sil main.swift
- 生成 llvm IR 代码;
swiftc-emit-ir main.swift -o main.ll
- 生成汇编代码
swiftc-emit-assembly main.swift -o main.s