美文网首页
Swift - 元组

Swift - 元组

作者: 恍然如梦_b700 | 来源:发表于2020-06-09 18:33 被阅读0次

元组(Tuple)是Swift语言中特有的数据类型,它将多个值组合成一个复合值,元组内的值可以是任意类型,并不一定相同,元组在作为函数返回值时非常有用。本案例将学习如何使用元组,包括元组的定义和访问,元组和switch语句结合使用等。

声明

var aTuple = (10, "Xishi")

最简单的元组,就是在圆括号中,用逗号分割的一组值。
元素带名称的元组:

var aTuple = (index: 10, name: "Xishi")

元组有以下特点:

  • 一旦声明,可以改值,但不能添加/删除元素
  • 不能更改已经声明的元素名称
  • 已声明的名称可以省略,但未声明名称的元组,不可添加名称:
var aTuple = (10, "Xishi") // 未声明名称
aTuple = (10, name:"Xishi") // 后期添加名称,可行但无效
aTuple.name // 错误

取值

要取用元组中的值,针对声明时是否有元素名称,有两种取值方法,
通用方法,使用下标:

aTuple.0 // == 10
aTuple.1 // == "Xishi"

已命名的元组,可使用名称:

aTuple.index
aTuple.name

还可以直接分拆成常量/变量:

let (x, y) = aTuple
x // == 10
y // == "Xishi"
var (a, b) = aTuple
a // == 10
b // == "Xishi"

取值时可以指定类型,加强类型判断:

let (x, y): (Int, Int) = (1, 2) //正确
let (x, y): (Int, Int) = aTuple //错误,因为第二个值声明为String,与Int不相符

不想处理的值,可以用下划线_代替(大概是设计者体恤我们想变量名的痛苦吧):

let (x, _) = aTuple

应用

作为函数参数

func foo(_ args: (Int, Int, String)) -> Int {
    return args.0
}

let arguments = (4, 3, "hello")
foo(arguments) // 返回 4

作为函数返回值

利用元组,从函数中返回多个值:

func abc() -> (Int, Int, String) {
    return (3, 5, "Xishi")
}

let (a, b, c) = abc()

通过以上介绍,你对元组应该有些概念了,希望你能先忘记这些熟悉的概念,仔细体会文中提到的使用方法,避免在开发时陷入不必要的误区中。

下面这个是RXSwift Demo中的部分用法:

 init(input: (
            username: Observable<String>,
            password: Observable<String>,
            repeatedPassword: Observable<String>,
            loginTaps: Observable<Void>
        ),
        dependency: (
            API: GitHubAPI,
            validationService: GitHubValidationService,
            wireframe: Wireframe
        )
    ) {
        let API = dependency.API
        let validationService = dependency.validationService
        let wireframe = dependency.wireframe

相关文章

  • 5.元组(tuple)及可空类型(null_type)

    元组 kotlin_元组 swift_元组 可空类型 kotlin_可空类型 Swift可选/可空类型(Optio...

  • Swift超基础语法(元组篇)

    你对Swift中的元组了解多少呢?...很有自信嘛...看完这篇文章再说喽 元组 元组是Swift中特有的,OC中...

  • Swift 的元组是精简版结构体?骗你的啦

    Swift 的元组是精简版结构体?骗你的啦 Swift 的元组是精简版结构体?骗你的啦

  • Swift 元组

    Swift 元组 元组比较 两个相同元素类型的元组,如果每个元素都遵循了 Equatable 协议,那么这两个元组...

  • 语法进阶-元组

    ---参考Bannings的Swift 元组(Tuples)介绍 1. 元组的定义2.读取元组中的数据3.跳过不关...

  • 一个元组小技巧 & Swift与OC混编

    一个元组小技巧 ![Uploading Honzon_045208.jpg . . .]#元组小拓展用法Swift...

  • Swift 元组

    元组(tuples)把多个值组合成一个复合值。元组内的值可以是任意类型,并不要求是相同类型。 下面这个例子中,(4...

  • swift 元组

    //定义文具信息为元组类型var wenju = ("铅笔","橡皮","录音笔","书包","书本") //定义...

  • Swift - 元组

    元组 元组的介绍 元组是swift中特有的,OC中并没有相关类型 那么它是什么呢?它是一种数据结构,在数学中应用广...

  • Swift元组

    元组的介绍 元组是Swift中特有的,OC中并没有相关类型 它是什么呢?它是一种数据结构,在数学中应用广泛类似于数...

网友评论

      本文标题:Swift - 元组

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