如何在swift中

时间:2015-07-18 03:39:59

标签: arrays swift types return

所以在一个swift的playground文件中,我试图执行以下闭包:

var list = [5, 4, 3]

var Arraymultiplier = {(list:Array) -> Array in 
    for value in list {
        value*2
        return list
    }
}

Arraymultiplier(list)

当我这样做时,我得到一个错误,说必须在< ..>中引用泛型类型数组。括号,但是当我放括号时,我得到另一个错误。

将数组类型声明为输入和返回的正确方法是什么?

1 个答案:

答案 0 :(得分:0)

Array is a generic类型,这意味着它希望在<中指定要指定的数组成员的实际类型紧随>后的Array

var arrayMultiplier = {(list: Array<Int>) -> Array<Int> in 
    // do whatever you want here
}

或者,就数组而言,有一种方便的语法使用[ ]个字符,并且完全不需要Array引用:

var arrayMultiplier = {(list: [Int]) -> [Int] in 
    // do whatever you want here
}

我不确定原始代码示例是做什么的,但看起来您可能一直在尝试构建一个新项目,每个项目乘以2.如果是这样,那么您可能会执行以下操作:< / p>

let inputList = [5, 4, 3]

let arrayMultiplier = { (list: [Int]) -> [Int] in 
    var results = [Int]()                         // instantiate a new blank array of `Int`
    for value in list {                           // iterate through array passed to us
        results.append(value * 2)                 // multiply each `value` by `2` and add it to the `results`
    }
    return results                                // return results
}

let outputList = arrayMultiplier(inputList)

或者,显然,您可以使用map函数有效地实现类似的行为:

let outputList = inputList.map { $0 * 2 }