1. 读后概述

《Swift编程:从入门到精通》是一本全面介绍Swift编程语言的书籍,适合初学者和有一定编程基础的开发者。本书以通俗易懂的语言,详细讲解了Swift语言的语法、特性以及在实际开发中的应用。通过本书的学习,读者可以掌握Swift编程的基本技能,并能够独立开发iOS和macOS应用程序。

2. 语法笔记

2.1 说明

编程语言都是相通的,因此对于基础的语法都是一样。下面主要是对不同的且重要的语法进行了做了笔记,对于已知或类似的语法没有进行细致的说明。

2.2 基础类型

2.2.1 变量与常量

Swift用let定义常量,用var定义变量。对于数据类型则Swift自行推断(类型推断在C中相当于auto这个类型占位符一样)。常量在设定后,将不能再更改它的值,变量则可以。

let constant = 10
var variable = 20

如果需要指定类型,则使用类型注解:

var welcomeMessage: String = "Hello, World!"

2.3 运算符

Swift中的运算符包括算术运算符、比较运算符、逻辑运算符等。

let a = 5
let b = 3

let sum = a + b
let difference = a - b
let product = a * b
let quotient = a / b
let remainder = a % b

let greaterThan = a > b
let lessThan = a < b
let equal = a == b
let notEqual = a != b

let and = true && false
let or = true || false
let not = !true

2.4 字符与字符串

Swift中的字符串是由字符组成的序列,可以使用单引号或双引号定义。

let singleQuotedString = "Hello"
let doubleQuotedString = "Hello, World!"

2.5 控制流

Swift中的控制流包括条件语句和循环语句。

2.5.1 条件语句

let a = 5
let b = 10

if a > b {
    print("a大于b")
} else if a < b {
    print("a小于b")
} else {
    print("a等于b")
}

2.5.2 循环语句

for i in 1...10 {
    print(i)
}

var sum = 0
for i in 1...10 {
    sum += i
}
print(sum)

2.6 函数

Swift中的函数是代码块,可以接受参数并返回值。

func add(a: Int, b: Int) -> Int {
    return a + b
}

let result = add(a: 5, b: 10)
print(result)

2.7 闭包

闭包是函数的另一种形式,它可以捕获并记住与之定义时的作用域内的变量。

let closure = { (a: Int, b: Int) -> Int in
    return a + b
}

let result = closure(5, 10)
print(result)

2.8 枚举、结构体、类

2.8.1 枚举

枚举(enum)是一种用于组织相关值的类型,可以包含原始值和关联值。

enum Color {
    case red
    case green
    case blue
}

let color = Color.red
print(color)

2.8.2 结构体

结构体(struct)是一种值类型,可以定义属性和方法。

struct Point {
    var x: Int
    var y: Int
}

let point = Point(x: 5, y: 10)
print(point)

2.8.3 类

类(class)是一种引用类型,可以定义属性和方法。

class Person {
    var name: String
    var age: Int

    init(name: String, age: Int) {
        self.name = name
        self.age = age
    }
}

let person = Person(name: "张三", age: 20)
print(person)

2.9 类的构造与析构

2.9.1 构造函数

构造函数用于初始化类实例。

class Person {
    var name: String
    var age: Int

    init(name: String, age: Int) {
        self.name = name
        self.age = age
    }
}

let person = Person(name: "张三", age: 20)
print(person)

2.9.2 析构函数

析构函数用于释放类实例占用的资源。

class Person {
    var name: String
    var age: Int

    init(name: String, age: Int) {
        self.name = name
        self.age = age
    }

    deinit {
        // 释放资源
    }
}

2.10 属性监听器

属性监听器用于监听属性的变化。

class Person {
    var name: String {
        didSet {
            print("姓名变化")
        }
    }

    init(name: String) {
        self.name = name
    }
}

let person = Person(name: "张三")
person.name = "李四"

2.11 类的继承

类可以继承自另一个类,继承意味着子类可以继承父类的属性和方法。

class Student: Person {
    var score: Int

    init(name: String, age: Int, score: Int) {
        self.score = score
        super.init(name: name, age: age)
    }
}

let student = Student(name: "张三", age: 20, score: 90)
print(student)

2.12 扩展

扩展可以给已有的类型添加新的属性、方法等。

extension Int {
    func squared() -> Int {
        return self * self
    }
}

let number = 5
print(number.squared())

2.13 协议

协议可以定义一组必须实现的属性和方法。

protocol Vehicle {
    var name: String { get }
    func drive()
}

class Car: Vehicle {
    var name: String = "汽车"
    func drive() {
        print("开车")
    }
}

let car = Car()
print(car.name)
car.drive()

2.14 泛型

泛型可以定义一个可以接受任何类型的类型参数。

func swap<T>(a: T, b: T) -> (T, T) {
    return (b, a)
}

let result = swap(a: 5, b: "6")
print(result.0)
print(result.1)

3. 总结

通过学习《Swift编程:从入门到精通》,读者可以全面了解Swift编程语言,掌握其语法和特性,并能够独立开发iOS和macOS应用程序。本书内容丰富,适合初学者和有一定编程基础的开发者学习。