iOS-Swiftswift-only 八条精选iOS Developer

swift的tuples

2016-07-17  本文已影响116人  八条8tiao

Tuples的引入,实在是为我们编写程序带来极大便利。如果没有tuple,当我们在面对一些临时使用的一些自定结构时,我们不得不使用class或struct这种重量级的类型进行定义。但有了tuple,我们可以非常方便快速的将几种类型捏合成一个tuple对象,从而获得一种强大的表达能力。

1、创建tuples

var point = (2,2)

在swift当中我们可以很容的创建tuple对象,point就是一个由两个整数构成的tuple对象,元素之间用逗号分隔(数组,字典元素之间的分隔都是如此),所有的内容用小括号括起来。当然,我们可以构造更为复杂的tuple,几乎所有swift支持的类型(包括tuple自己),都可以作为构造tuple的元素。

var tuple = (2,false,[1,2,3],("a",1))

2、访问并修改tuple元素

我们可以用索引位置来访问tuple的元素,索引位置从0开始,逐一递增的,这是不是有点像数组?

var point = (2,2)
point.0 // 2 , 访问第一个元素
point.1 // 2 , 访问第二个元素

用索引位置虽然可以完成tuple的访问,当这总令人感觉有点遗憾,毕竟0,1只是个数字,除了表达位置以外无法传达更多的逻辑意义。我们本来用point定的是一个直角坐标系的一个点,我们希望用x,y这样的方式来表达才够劲吗。这时候我们可以用命名的方式定义tuple。

var point: (x: Int,y: Int) = (2,2)
point.x // 2 , 访问第一个元素
point.y // 2 , 访问第二个元素

当我们在创建tuple的时候,给每个位置的元素命名之后,我们就可以用元素的名称来访问该元素了,这里需要强调一下tuple的类型,tuple的类型也是有所有元素的类型共同决定的(所以swift没办法提供一个Tuple类型).

tuple中的元素是不可以被删除的,但是可以修改,我们可以用下面的方法来修改tuple中的元素。

var point: (x: Int,y: Int) = (2,2)
point.x = 3  // 修改tuple的第一个元素的值为3,注意我们无法修改元素的数据类型

3、tuple的一些实践

这部分内容参考了“Tuples in Swift, Advanced Usage and Best Practices”,我这里简单列举这篇内容几个很有意思的知识点,建议大家阅读原文。

func varargsFunc(params: (String,Int)...) {

}
func somefunc(a: String,_ b: Int,_ c: Bool)
   print("Hello,world")
}

let tuple = ("hi",1,true)

someFunc(tuple)
上一篇 下一篇

猜你喜欢

热点阅读