无法使用索引++

时间:2016-02-09 19:02:18

标签: arrays swift

我正在尝试编写一些将我的数组附加到此代码的代码: [" e"," 0"," "," 0"]但我得到的是:[" e"," 0"," 0"]。我不明白它为什么显示后者,因为据我所知,当我加2时索引变为3。 此外,我也得到了#34;致命错误:数组索引超出范围"当我尝试运行这个:TheTape.insert(" 0",atIndex:index + 2)。在我没有指定数组的大小时,我也不明白为什么它超出了范围。

感谢您的帮助!

import UIKit
var TheTape = [Any]()
var index = 0 

    if(TheTape.isEmpty){

        TheTape.insert("e", atIndex: 0)
        print(TheTape)
        index++
        TheTape.insert("0", atIndex: index)
        print(TheTape)
        index + 2
        TheTape.insert("0", atIndex: index)
        print(TheTape)      
    }

2 个答案:

答案 0 :(得分:2)

基本上你是这样做的;

TheTape.insert("e", atIndex: 0)       // array = ['e']           (insert at 0)
print(TheTape)
index++                               // index 0 -> 1
TheTape.insert("0", atIndex: index)   // array = ['e', '0']      (insert at 1)
print(TheTape)
index + 2                             // Does nothing
TheTape.insert("0", atIndex: index)   // array = ['e', '0', '0'] (insert at 1)
print(TheTape)      

正如您所看到的,index + 2什么都不做(或者更确切地说,它计算index + 2但不会将结果存储在任何地方),如果您想将索引增加2,请使用index += 2

在数组外部的索引处插入是一个错误,并且会给出您看到的错误。如果你想要一个空值来分隔值,你需要先插入它。

答案 1 :(得分:1)

首先,index + 2不会更改index

的值

其次,您不能TheTape.insert("0", atIndex: index+2),因为您的数组TheTape只有2的大小,当时您在位置{{1}插入object这需要至少在具有3个元素的数组。