swift: 不能在不可变值上使用可变成员:下标是只获取的

swift: Cannot use mutating member on immutable value: subscript is get-only

import Cocoa

struct MyData {
    let t: TimeInterval
    let q: Int
}

extension Collection where Index == Int, Element == [MyData] {
    mutating func add(_ new: MyData) {
        guard !self.isEmpty else {
            self = [[new]] as! Self
            return
        }
    
        self[self.count - 1].append(new) /// <---- how to fix it???
    }
}

var myData: [[MyData]] = []
myData.add(MyData(t: Date().timeIntervalSince1970, q: 1))

print(myData)

这是一个变异函数,我无法访问最后一个值来添加新元素。这是为什么? 此外,self.last 不再工作(我使用 xcode 13 beta 3)。

您需要延长 MutableCollection。普通的 Collection 不支持通过下标设置,可变对应物支持。

extension MutableCollection where Index == Int, Element == [MyData] {
  //...
}