什么是元组和列表?

时间:2016-10-12 00:25:12

标签: swift list tuples

我正在观看斯坦福 - 用Swift开发iOS 9应用程序 - 3.更多关于youtube的Swift和Foundation Framework正在讨论元组和列表,即使我在线搜索,我也不确定它们是什么我仍然无法理解它们是什么。

2 个答案:

答案 0 :(得分:2)

元组是一组零个或多个值,表示为一个值。

例如("John", "Smith")包含一个人的名字和姓氏。您可以使用点(。)表示法后跟值的索引来访问内部值:

var person = ("John", "Smith")

var firstName = person.0 // John
var lastName = person.1 // Smith  

数组文字被写为值的列表,用逗号分隔,用一对方括号括起来:

下面的示例创建一个名为shoppingList的数组来存储String值:

var shoppingList: [String] = ["Eggs", "Milk"]
// shoppingList has been initialized with two initial items  
var firstItem = shoppingList[0]
// firstItem is equal to "Eggs"

答案 1 :(得分:2)

Turple基本上是一组变量,而列表是几个相同类型值的索引。

<强>元组

元组真的很酷(我想)。它允许你基本上把一堆变量放在一起,并为它们设置一个名称或什么都没有。

例如,我们假设你有二次公式。将这些值组合起来是有意义的:

var quadraticFunction: (a: Int, b: Int, c: Int, plus: Double, minus: Double)

有了这个你甚至可以返回元组。为了更进一步,你可能想要制作一个函数来执行二次公式,取一个数字,然后为b添加1,为c添加2。

    func performQuadraticFormula(startValue: Int) -> (a: Int, b: Int, c: Int, plus: Double, minus: Double) {
    var returnQuadratic: (a: Int, b: Int, c: Int, plus: Double, minus: Double)

    returnQuadratic.a = startValue
    returnQuadratic.b = startValue + 1
    returnQuadratic.c = startValue + 2
    returnQuadratic.plus = /* lots of math for this part */
    returnQuadratic.minus = /* lots of math for this part */

    return returnQuadratic
}

所以现在你可以使用这个输出并实际存储它以供以后使用:

let function = performQuadraticFormula(startValue: 10)
print(function.a)
// you can do whatever you want with this output now

因此,您可以为这些值指定名称,将其存储以供日后使用,分配它们,将它们返回到函数中。此外,您不必为每个值命名,在这种情况下,它将是这样的:

function.0

<强>解释

我想我可以看到你如何轻易地与列表和元组混淆。两者都可以用它的索引引用(tuple.0,list [0])。但是列表非常不同。首先,您不能为每个值指定名称。但真正的重大区别是,元组是使用其值预定义的,而列表可以轻松扩展和删除项目。

例如,您可以在列表中存储一些测试成绩

var tests = [100, 100, 90, 78, 100, 10]

然后,下周去添加一个新的,它会自动扩展:

tests.append(99.8)

一个元组migght只有3个值,而这个值;你必须返回并添加一个新变量才能添加新值。对于列表,您有一堆相同的类型,可以添加任何您想要的。要获得一个,你可以这样做:

let firstTest = tests[0]

此外,列表(数组)有很多功能,如.map(),filter()等。元组没有。

将一组统计数据或数据列表和元组视为将一堆变量放在一行上的方法