swift 语言入门

基本语法

中文版 Apple 官方 Swift 教程《The Swift Programming Language》

常用库

数组

Swift语言中没有内设的栈和队列, 可通过数组或链表模拟栈和队列(链表的加入和删除的时间复杂度是O(1),但因为Swift没有现成的链表,而数组又有很多的API可以直接使用,所以下面用数组实现)

  • 栈是后进先出的结构。你可以理解成有好几个盘子要垒成一叠,哪个盘子最后叠上去,下次使用的时候它就最先被抽出去

  • 在iOS开发中,如果你要在你的App中添加撤销操作(比如删除图片,恢复删除图片),那么栈是首选数据结构

  • 几个基本操作:push、pop、isEmpty、peek、size

/// 栈
class Stack<Element> {
    var stack: [Element]
    /// 检查栈空
    var isEmpty: Bool { return stack.isEmpty }
    /// 栈顶元素
    var peek: Element? { return stack.last }
    /// 栈大小
    var size: Int { return stack.count }

    init() {
        stack = [Element]()
    }

    /// push压入
    /// - Parameter object: 元素
    func push(object: Element) {
        stack.append(object)
    }

    /// pop弹出
    /// - Returns: 元素
    func pop() -> Element? {
        return stack.popLast()
    }
}

队列

  • 队列是先进先出的结构。这个正好就像现实生活中排队买票,谁先来排队,谁先买到票

  • iOS开发中多线程的GCD和NSOperationQueue就是基于队列实现的

  • 几个基本操作:enqueue、dequeue、isEmpty、peek、size

字典

基本用法

注意点

  • 一个字典的 Key 类型必须遵循 Hashable 协议

标准库

sort、sorted

区别:

  • sort()方法直接改变当前数组。

  • sorted()方法返回一个当前数组的 copy 排序后返回。

注意:

  • 选择使用哪一个方法,要看具体的使用环境,如果不想改变数组而只是单纯的想获取排序后的结果,则应该使用sorted() 。

  • 如果想要改变数组,应当注意如果该数组是函数的参数,Swift 的函数的参数默认是常量类型,想要改变必须加入inout修饰。

  • sorted()是值类型拷贝,如果数组太大,会消耗太多内存。

刷题注意点

  • leetcode 中,全局变量不要当做返回值,否则刷题检查器会报错

最后更新于

这有帮助吗?