簡體   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