美文网首页
Swift基础知识补充(三)

Swift基础知识补充(三)

作者: 落叶刺客 | 来源:发表于2017-05-22 21:26 被阅读15次

  1、集合类型

  Swift中的集合类型主要是指Array、Dictionary和Set,详细情况参见《Swift中常用的数据结构(上)》Array中的元素是有序的,可以重复出现;Set里面的元素是无序的,不能重复出现。另外,Dictionary中的键(Key)和值(Value)也是无序的,并且键(Key)是不能重复的,但是值(Value)却可以重复出现

  声明数组和字典时,既可以使用泛型语法(也称标准语法),又可以使用简写语法。但是,声明Set只能用泛型语法。不过,Set可以借助数组的简写语法来进行快速声明。

  2、值类型参数的引用传递

  函数参数的传递有两种:值类型和引用类型。值类型传递的是参数的一个副本,它在函数调用的过程中不会影响原始数据;引用类型是把数据本身(也就是内存地址)传递过去,它在函数调用的过程中可以影响原始数据

  在Swift中,除了类之外,常见的原生数据类型都是值类型。在实际开发过程中,有时候需要将值类型参数作为引用的方式进行传递。Swift中提供了一个关键字inout专门用来处理这种情况。使用inout修饰的参数被称为输入输出参数。函数在调用时,参数前面要加上取地址符&。inout和取地址符是相互对应的。以我在《算法基础知识导引》中讲解的插入排序为例:

// 插入排序的代码实现
func insertionSort(alist : inout [Int]) {
    
    // 遍历数组中下标从1到alist.count - 1的元素
    for i in 1..<alist.count {
        
        // 将遍历出来的元素存储到临时变量tmp中
        let tmp = alist[i]
        
        // 给已经排好序的元素下标赋值
        var j = i - 1
        
        // 下标j有意义,并且元素alist[j]的值比元素tmp大时
        while j >= 0 && alist[j] > tmp {
            
            // 将元素alist[j]的值赋值给下标为i(也就是下标为j + 1)的元素
            alist[j + 1] = alist[j]
            
            // 将下标j的值减1
            j = j - 1
        }
        
        // 将tmp赋值给原来下标值为j(也就是现在下标值为j + 1)的元素
        alist[j + 1] = tmp
    }
}

// 声明一个未经排序的数组
var myIntArr : [Int] = [56, 17, 63, 34, 77, 52, 68]

// 利用插入排序对原来的数组进行重新排序
insertionSort(alist: &myIntArr)

  在上述代码中,函数insertSort()的参数是用inout修饰的,所以在函数调用的时候,它传递的是数组的引用地址,并且经过排序之后,原始数组中的值也发生了变化。

相关文章

  • Swift基础知识补充(三)

      1、集合类型   Swift中的集合类型主要是指Array、Dictionary和Set,详细情况参见《Swi...

  • Swift基础知识补充(一)

      1、数据类型   在Swift数据类型主要分为值类型和引用类型。其中,整型(Int)、浮点型(Float)、布...

  • Swift基础知识补充(二)

      1、字符   在Objective-C中,字符是放在单引号('a')之间的。但是,在Swift中不能用这种方式...

  • swift学习目录

    Swift中的一些基础知识 Swift中的常量、变量、可选值 Swift中的控制流(if/三目/switch) S...

  • swift学习资料整理

    基础知识篇 Swift Programming Language Using Swift with Cocoa a...

  • C语言回顾

    基础知识 控制流 基础知识补充 其他主题

  • iOS OC与Swift混编

    一、Swift使用OC类的桥文件 二、OC使用Swift类的桥文件 三、配置信息 四、补充

  • Swift教程目录

    1.Swift基础知识

  • Swift补充

    command+Z 撤销之前的操作 恢复原状command + M 最小化 本地存储 数据库本质上是一些按项目需求...

  • Swift5.0 - day1-基础介绍与基本运算

    一、基础知识 1.1、Swift 不用编写main函数(本质上swift是有main函数的),Swift将全局范围...

网友评论

      本文标题:Swift基础知识补充(三)

      本文链接:https://www.haomeiwen.com/subject/uuqixxtx.html