Ios 当我们可以使用数组在swift中返回多个值时,为什么要使用元组
今天,我刚刚介绍了一些基本的swift概念,并用一些例子来理解这些概念。现在我已经完成了元组的学习 我有一个疑问,即使用元组有什么必要?是的,我在这上面做了一些挖掘,这是我得到的: 我们可以从一个函数返回多个值。好的,但是我们也可以通过返回数组来实现 数组可以,但我们可以返回不同类型的多个值。好的,很酷,但这也可以通过如下任意对象数组来完成:Ios 当我们可以使用数组在swift中返回多个值时,为什么要使用元组,ios,swift,ios8,tuples,Ios,Swift,Ios8,Tuples,今天,我刚刚介绍了一些基本的swift概念,并用一些例子来理解这些概念。现在我已经完成了元组的学习 我有一个疑问,即使用元组有什么必要?是的,我在这上面做了一些挖掘,这是我得到的: 我们可以从一个函数返回多个值。好的,但是我们也可以通过返回数组来实现 数组可以,但我们可以返回不同类型的多个值。好的,很酷,但这也可以通过如下任意对象数组来完成: func calculateStatistics(分数:[Int])->[AnyObject] { var min=分数[0] var max=分数[0]
func calculateStatistics(分数:[Int])->[AnyObject]
{
var min=分数[0]
var max=分数[0]
var总和=0
以分数求分数
{
如果分数>最大值{
最大值=分数
}
否则,如果得分
我们可以命名元组中存在的对象。好的,但我可以使用任何对象的字典
我并不是说当我们有了这个的时候为什么要使用元组。但是应该有一些只有元组才能做的事情,或者只有元组才容易做到。此外,如果没有充分的理由,创建swift的人不会在swift中包含元组。因此,他们应该有一些很好的理由参与其中
所以伙计们,请让我知道是否有任何特定的情况下,元组是最好的选择
提前感谢。元组是一种比异构数组更轻的数据结构。虽然它们非常相似,但在通过索引访问元素时,优势在于可以很容易地在Swift中构造元组。引入/插入此(元组)数据结构的目的是多个返回类型。以最小的工作量从“被调用方”返回多个数据,这就是具有元组的优势。希望这有帮助 > P>例如,考虑这个简单的例子:
enum MyType {
case A, B, C
}
func foo() -> (MyType, Int, String) {
// ...
return (.B, 42, "bar")
}
let (type, amount, desc) = foo()
使用数组
,要获得相同的结果,必须执行以下操作:
func foo() -> [Any] {
// ...
return [MyType.B, 42, "bar"]
}
let result = foo()
let type = result[0] as MyType, amount = result[1] as Int, desc = result[2] as String
元组更简单、更安全,不是吗?元组是匿名结构,可以以多种方式使用,其中之一是使从函数返回多个值更容易 使用元组而不是数组的优点是:
- 一个元组中可以存储多种类型,而在数组中只能存储一种类型(除非使用
)[AnyObject]
- 固定数量的值:您不能传递比预期少或多的参数,而在数组中可以放置任意数量的参数
- 强类型:如果不同类型的参数被传递到错误的位置,编译器将检测到这一点,而使用一个不会发生的数组
- 重构:如果参数的数量或类型发生变化,编译器将产生一个相关的编译错误,而数组将不被注意地传递
- 命名:可以将名称与每个参数关联
- 赋值更简单、更灵活-例如,可以将返回值赋值给元组:
或者,可以自动提取所有参数并将其分配给变量let tuple = functionReturningTuple()
可以忽略一些值let (param1, param2, param3) = functionReturningTuple()
let (param1, _, _) = functionReturningTuple()
- 与函数参数的相似性:调用函数时,传递的参数实际上是一个元组。例如:
(Swift 2中已弃用)该函数也可以作为以下方式调用:// SWIFT 2 func doSomething(number: Int, text: String) { println("\(number): \(text)") } doSomething(1, "one") // SWIFT 3 func doSomething(number: Int, text: String) { print("\(number): \(text)") } doSomething(number: 1, text: "one")
let params = (1, "one") doSomething(params)
这个列表可能并不详尽,但我认为这足以让您喜欢使用元组而不是数组来返回多个值理想情况下,元组用于从函数返回多个命名数据以供临时使用。如果元组的作用域在程序中是持久的,那么您可能希望将该数据结构建模为类或结构 尝试编写一个函数,返回两个不同类型的值,但不使用tuple@BryanChen您可以看到我添加的示例代码,它返回AnyObject的数组。传递给函数的参数不是元组。不能有一个元素元组,但可以有一个带一个参数的函数。上述剂量测定代码(参数)也将不再适用于Swift 3。
let params = (1, "one")
doSomething(params)