iam*_*ish 27 tuples ios swift ios8
今天我只是通过一些基本的快速概念,并正在使用一些例子来理解这些概念.现在我已经完成了元组学习.
我有一个疑问,即使用元组需要什么?我在这里做了一些挖掘,这就是我得到的:
我们可以从函数中返回多个值.好的,但我们也可以通过返回一个数组来做到这一点.
数组好,但我们可以返回不同类型的多个值.好的很酷,但这也可以通过AnyObject数组完成,如下所示:
    func calculateStatistics (scores:[Int])->[AnyObject]
{
    var min = scores[0]
    var max = scores[0]
    var sum = 0
    for score in scores
    {
        if score > max{
            max = score
        }
        else if score < min{
            min = score
        }
        sum += score
    }
    return [min,max,"Hello"]
}
let statistics = calculateStatistics([25,39,78,66,74,80])
var min = statistics[0]
var max = statistics[1]
var msg = statistics[2] // Contains hello
我们可以命名元组中存在的对象.好的,但我可以使用AnyObject的字典.
我不是说为什么在我们得到这个时使用元组.但是应该有一些只有元组可以做到的东西,或者只有元组才能做到这一点.而且,如果没有充分的理由,创造swift的人就不会迅速参与元组.所以应该有一些很好的理由让他们参与其中.
所以大家请告诉我,如果有任何特定情况,元组是最好的选择.
提前致谢.
Ant*_*nio 60
元组是可以以多种方式使用的匿名结构,其中之一是使函数中的多个值更容易返回.
使用元组而不是数组的优点是:
[AnyObject])赋值更容易,更灵活 - 例如,返回值可以分配给元组:
let tuple = functionReturningTuple()
或者可以自动提取所有参数并将其分配给变量
let (param1, param2, param3) = functionReturningTuple()
并且可以忽略某些值
let (param1, _, _) = functionReturningTuple()
与函数参数的相似性:当调用函数时,传递的参数实际上是一个元组.例:
// 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")
(在Swift 2中不推荐使用)该函数也可以调用为:
let params = (1, "one")
doSomething(params)
这个列表可能并不详尽,但我认为这足以让你更喜欢使用元组来返回多个值
rin*_*aro 11
例如,考虑这个简单的例子:
enum MyType {
    case A, B, C
}
func foo() -> (MyType, Int, String) {
    // ...
    return (.B, 42, "bar")
}
let (type, amount, desc) = foo()
使用Array,要获得相同的结果,您必须这样做:
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
元组更简单,更安全,不是吗?
元组是一种比异构阵列重量更轻的数据结构.虽然它们非常相似,但在通过索引访问元素时,优点是可以在Swift中非常容易地构造元组.引入/插入此(元组)数据结构的意图是多种返回类型.以最小的努力从"被调用者"返回多个数据,这是拥有元组的优势.希望这可以帮助!