arrays - Swift 数组可选类型和下标(Beta 3)

标签 arrays swift xcode6

我正在关注 2014 WWDC 教程 408:使用 XCode Beta 3 的 Swift Playgrounds(30 分钟)。自 Beta 2 以来,Swift 语法发生了变化。

var data = [27, 46, 96, 79, 56, 85, 45, 34, 2, 57, 29, 66, 99, 65, 66, 40, 40, 58, 87, 64]

func exchange<T>(data: [T], i: Int, j: Int) {
    let temp = data[i]
    data[i] = data[j]  // Fails with error '@lvalue $T8' is not identical to 'T'
    data[j] = temp     // Fails with error '@lvalue $T5' is not identical to 'T'
}

exchange(data, 0 , 2)
data

为什么我不能以这种方式修改可变整数数组?

最佳答案

因为子例程参数是用 let 隐式定义的,因此是不可变的。尝试将声明更改为:

func exchange<T>(inout data: [T], i: Int, j: Int) {

以及调用:

exchange(&date, 0, 2)

您也可以使用 var 但这只允许在子例程中修改数组。 beta 3 的重大变化是让数组真正按值传递,而不是在某些时候只是按值传递,但在其余时间则不然。

关于arrays - Swift 数组可选类型和下标(Beta 3),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24710208/

相关文章:

swift - 如何在不编码的情况下使用 swift 数据库中的种子数据?

java - 三元组的最大值和最小值

json - 将复杂 JSON 中的每个值提取到 Swift 中的数组中

c++ - 指向数组转换的指针

ios - 从不同的开始日开始一周

ios - AVAssetExportSession - 导出的视频与相机胶卷不兼容

ios - UITabBarController 动画的转换委托(delegate)

ios - 持续更新应用扩展

javascript - 将 Javascript 数组转换为 MySQL 数组

c - 指向包含数组的结构的指针