此代码
extension Collection {
mutating func f() {
removeFirst()
}
}
处理错误
cannot use mutating member on immutable value: 'self' is immutable
我认为变异关键字应该使自己变成自我。可变的。为什么呢?
答案 0 :(得分:0)
RangeReplaceableCollection
是集合的协议
如果你可以添加或删除元素,请遵守:
extension RangeReplaceableCollection {
mutating func f() {
self.removeFirst()
}
}
答案 1 :(得分:0)
我认为mutating关键字应该使'self'可变。为什么呢?
如果您可以通过执行您尝试的操作简单地将现有协议或类从不可变更改为可变,那么如果类无法信任自己的状态,则几乎不可能以高效且设计良好的方式编写框架或其属性的值。
这是一个必要的约束,它也遵循我所看到的open-closed principle。