我正在尝试在结构Pitch上实现可比性,该结构具有名为value的计算属性。计算出的属性被标记为“变异获取”,因为它需要修改此实例属性。但是,当我尝试扩展以使结构可比时,在返回行旁出现错误:
不能在不可变值上使用变异getter:“ lhs”是“ let”常量
extension Pitch: Comparable {
public static func < (lhs: Pitch, rhs: Pitch) -> Bool {
return lhs.value < rhs.value
}
请问如何解决此问题?
答案 0 :(得分:3)
主要是因为Mutating正在更改对象内部变量的值。
var
并且参数在Swift中是不可变的(常量)。
因此,您可以将这些参数克隆到类型为Value
的新对象中,并使用其可变的Struct
。
由于它们的类型为var newObj = myOldObj
,值类型,因此您可以简单地说出public static func < (lhs: Pitch, rhs: Pitch) -> Bool {
var lhsObj = lhs
var rhsObj = rhs
return lhsObj.value < rhsObj.value
}
。
您的代码可能是这样的。
s1