所以在一个swift的playground文件中,我试图执行以下闭包:
var list = [5, 4, 3]
var Arraymultiplier = {(list:Array) -> Array in
for value in list {
value*2
return list
}
}
Arraymultiplier(list)
当我这样做时,我得到一个错误,说必须在< ..>中引用泛型类型数组。括号,但是当我放括号时,我得到另一个错误。
将数组类型声明为输入和返回的正确方法是什么?
答案 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 }