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] {
//...
}
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] {
//...
}