Swift 2D Array可选类型和下标(Beta 3)

时间:2014-07-08 00:00:58

标签: swift

我有一个在Beta 2中运行的2D阵列。但是,在Beta 3中我得到的@lvalue $ T15与T不同?'通过下标设置时。

class Array2D<T> {
let columns: Int
let rows: Int
let array: [T?] 

init(columns: Int, rows: Int) {
    self.columns = columns
    self.rows = rows
    array = [T?](count: rows*columns, repeatedValue: nil)
}

subscript(column: Int, row: Int) -> T? {
    get {
        return array[row*columns + column]
    }
    set {
        array[row*columns + column] = newValue  // Error here
    }
}}

有关如何解决此问题的任何想法?

1 个答案:

答案 0 :(得分:7)

在Beta3中,常量数组是完全不可变的,而变量数组是完全可变的。将let array: [T?]更改为var array: [T?],您的代码应该有效。