gpt4 book ai didi

swift - 改变用 let 关键字声明的数组

转载 作者:行者123 更新时间:2023-11-28 14:54:17 25 4
gpt4 key购买 nike

我知道 let 用于常量,var 用于变量。然而,这段代码让我感到困惑。

func filterGreaterThanValue(value: Int, numbers: [Int]) -> [Int] {
let result:[Int] = [Int]()

for number in numbers {
if number > value {
result.append(number)
}
}

return result
}

运行这个会产生错误

error: MyPlayground.playground:5:13: error: cannot use mutating member on immutable value: 'result' is a 'let' constant
result.append(number)
^~~~~~

据我了解,用 let 关键字声明的对象是不可变,因为我可以更改其属性,但不能将指向该对象的变量重新分配给一个不同的对象(即让它指向内存中的另一个地址)。

但是,在这个例子中,我做的是同样的事情吗?我已经初始化了一个数组对象,我只是修改它的属性。为什么不允许我这样做?

谢谢。

最佳答案

在 Swift 中,Array 是一个 struct,它是值类型。要更改结构的属性,您需要将对象和属性都设为 var 类型。

关于swift - 改变用 let 关键字声明的数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49548545/

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