gpt4 book ai didi

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

转载 作者:可可西里 更新时间:2023-11-01 00:54:28 24 4
gpt4 key购买 nike

我正在尝试在结构 Pitch 上实现可比性,它具有一个名为 value 的计算属性。计算属性被标记为“mutating get”,因为它需要修改此实例属性。但是当我尝试扩展以使结构具有可比性时,我在返回行旁边收到一条错误消息:

不能对不可变值使用可变 getter:“lhs”是一个“let”常量

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

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

最佳答案

主要是因为 Mutating 是改变对象内部变量的值。

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
}

关于Swift:使用计算的结构属性实现 Comparable,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53030994/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com