【问题标题】:How to declare the array type in swift如何在swift中声明数组类型
【发布时间】:2015-10-07 20:49:19
【问题描述】:

所以在一个快速的操场文件中,我试图执行以下闭包:

var list = [5, 4, 3]

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

Arraymultiplier(list)

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

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

【问题讨论】:

  • 您能否展示您如何尝试解决“必须在 <..> 括号中引用”错误?

标签: arrays swift types return


【解决方案1】:

Array 是一个generic 类型,这意味着它希望看到在&lt; 中指定的数组成员的实际类型,&gt; 紧跟在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。如果是这样,那么您可能会执行以下操作:

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 }

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-05-01
    • 2014-07-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多