【问题标题】:Swift: Can not access/set an empty array's first item by subscript [duplicate]Swift:无法通过下标访问/设置空数组的第一项[重复]
【发布时间】:2018-02-07 15:11:42
【问题描述】:

为什么不能通过下标访问/设置空数组的第一项?

例如:

var array: [Int] = []
array[0] = 1 //fatal error: Index out of range

【问题讨论】:

    标签: swift subscript


    【解决方案1】:

    var array: [Int] = [] 你创建了一个空数组,所以它没有索引为 0 的值。

    要解决这个问题,您可以 append 到数组中,例如:

    array.append(1)
    print(array[0]) // 1
    

    或将值数组设置为空数组:

    array = [1] // another way to do that: "array += [1]"
    print(array[0]) // 1
    

    或预定义填充任意值的数组(例如 0):

    let n = 10
    array = Array(repeating: 0, count: 10)
    array[0] = 0
    

    【讨论】:

      【解决方案2】:

      索引超出范围是因为数组中没有元素,所以没有索引0。要向数组中添加元素,你必须这样做

      array.append(1)
      

      在上面一行之后,可以设置第一个元素:

      array[0] = 2
      

      因为 现在数组中有一个元素。

      只有在确定索引存在于数组中时才使用下标。

      【讨论】:

        【解决方案3】:

        试试,

        array.append(1)
        

        array.insert(1, at: 0)
        

        array = [1]
        

        【讨论】:

          【解决方案4】:

          空数组初始化很好。如果你想访问/设置第一个项目,你只需要做:

          array.append(1) 
          

          它最初将存储在索引 0 中,您可以轻松访问它:array[0] - 但该访问只是为了阅读而不是添加。要增加价值,您必须进行“附加”。但是,如果数组不为空,则可以通过以下方式更改该值:

          array[0] = 7
          

          但是,如果您仍想在指定索引处添加值,您可以使用:

          array.insert(1, at: 0) //value at index
          

          【讨论】:

            猜你喜欢
            • 2019-11-16
            • 1970-01-01
            • 2014-07-01
            • 1970-01-01
            • 2016-06-16
            • 1970-01-01
            • 2014-04-18
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多