swift: нельзя использовать изменяющийся член для неизменяемого значения: индекс доступен только для чтения

avatar
Anton
8 августа 2021 в 16:32
86
1
0
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).

Источник

Ответы (1)

avatar
Rengers
8 августа 2021 в 16:55
1

Вам необходимо расширить MutableCollection. Обычный Collection не поддерживает настройку с помощью индексов, в отличие от изменяемого аналога.

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