【问题标题】:swift: Cannot use mutating member on immutable value: subscript is get-onlyswift:不能在不可变值上使用变异成员:下标是 get-only
【发布时间】:2021-10-12 14:18:15
【问题描述】:
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)。

【问题讨论】:

    标签: arrays swift 2d


    【解决方案1】:

    您需要扩展MutableCollection。普通的Collection 不支持通过下标设置,而可变对应项则支持。

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-10-23
      • 1970-01-01
      • 2020-01-28
      • 2020-08-08
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多