本文主要介绍Swift中元组的相关信息,非常详细,对大家有一定的参考价值。有需要的人来看看吧。
元组
元组是其他类型的组合。元组可以包含零个或多个类型,例如字符串、整数、字符、布尔和其他元组。还要注意,元组是值传递,而不是引用。
在Swift中创建元组的方法很简单。元组类型是零个或多个类型的列表,由括号括起来,并用逗号分隔。例如:
让firstHighScore=(玛丽,9001)
此外,创建元组时,还可以命名元组中的元素:
let secondHighScore=(姓名:詹姆斯,分数:4096)
这是创建元组的两种方法,非常简单明了。不需要像创建struct那样写出它的结构和内部属性,也不需要像创建class那样写初始化方法。你只需要把你想用的任何类型的值放在括号里,用逗号分开。如果愿意,还可以给每个元素命名,以提高元组的使用效率。
从元组中读元素
如果我们没有命名一个元组的元素,我们可以使用点语法通过定义的元组变量或常量来获得它的第1到第n个元素:
让firstHighScore=(玛丽,9001)
println(first high score . 0)//Mary
println(first high score . 1)//9001
如果你觉得上面的方法会造成语义歧义,那么我们也可以把一个元组赋给一个有元素名的元组(元素名的个数要对应):
let(名字,分数)=firstHighScore
println(名字)//玛丽
println(firstScore) //9001
如果只需要元组值的一部分,可以在分解时用下划线(_)标记要忽略的部分:
let (_,firstScore)=firstHighScore
println(firstScore) //9001
如果我们已经命名了元组中的元素,那么我们可以这样写它:
let secondHighScore=(姓名:詹姆斯,分数:4096)
println(second high score . name)//詹姆斯
println(second high score . score)//4096
将元组作为函数返回值
当您希望函数能够返回多种类型时,这是元组的最佳使用场景。
我们可以用元组作为函数的返回值,下面这些函数的返回值就是我们之前定义的secondHighScore元组:
func getahiscore()-(名称:字符串,分数:整数){
让那个名字=帕特丽夏
让分数=3894
return (theName,theScore)
}
为什么说上面函数的返回值是secondHighScore元组?因为getAHighScore函数返回的元组元素的个数、名称、类型与secondHighScore的相同。
事实上,在使用元组作为函数的返回值时,不必命名元素,只要理解每个元素的含义即可:
func getahiscore()-(String,Int) {
让那个名字=帕特丽夏
让分数=3894
return (theName,theScore)
}
如果您不确定返回的元组一定不能为零,那么您可以返回一个可选的元组类型:
func maybeGetHighScore()-(String,Int)?{
返回零
}
因为它是可选的元组类型,所以当返回的元组不为空时,需要解包该元组:
if let possible score=maybeGetHighScore(){
possibleScore.0
可能性核心1
}否则{
println(“这里什么也没有”)
}
注意:
当你定义一个没有返回值的函数时,该函数实际上返回一个空元组()。元组的访问级别
元组的访问级别取决于它包含的元素。例如,如果一个元组中的所有元素都是私有的,那么该元组也是私有的。但这里有一个最低原则。也就是说,如果一个元组中有两个元素,一个是私有的,一个是公共的,那么这个元组遵循最小原则,它的访问级别是私有的。
元组是值类型
关于值类型和引用类型的知识在这里不再是累赘。让我们通过一个代码示例来看看元组是哪些类型:
var someScore=(约翰,55岁)
var anotherScore=someScore
anotherScore.0=罗伯特
println(another score . 0)//输出:“Robert”
println(some score . 0)//输出:“John”
从上面的代码示例可以看出,我给anotherScore赋了一些tuple,然后修改了anotherScore的第一个元素的值,最后分别打印了someScore和anotherScore的第一个元素的值。someScore元组的第一个元素的值是Robert,而anotherScore元组的第一个元素的值还是John。可见元组是值类型。
总结
这就是本文的全部内容。希望这篇文章的内容能给你的学习或者工作带来一些帮助。有问题可以留言交流。谢谢你的支持。