繁体   English   中英

Swift:使用计算的struct属性实现Comparable

[英]Swift: Implementing Comparable with computed struct property

我正在尝试在结构Pitch上实现可比性,该结构具有名为value的计算属性。 计算出的属性被标记为“变异获取”,因为它需要修改此实例属性。 但是,当我尝试扩展以使结构具有可比性时,在返回行旁出现错误:

无法对不可变值使用变异吸气剂:“ lhs”是“ let”常量

  extension Pitch: Comparable {
    public static func < (lhs: Pitch, rhs: Pitch) -> Bool {
        return lhs.value < rhs.value
    }

知道如何解决这个问题吗?

主要是因为Mutating正在更改Object内部变量的值。

lhs & rhs  // Are parameter.

并且参数在Swift中是不可变的(常量)。

因此,您可以将这些参数克隆到var类型的新对象中,并使用它们的可变Value

而且因为它们的类型为Struct Value Type,所以您可以简单地说这个var newObj = myOldObj

您的代码可能是这样的。

public static func < (lhs: Pitch, rhs: Pitch) -> Bool {
    var lhsObj = lhs
    var rhsObj = rhs
    return lhsObj.value < rhsObj.value
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM