根据 Swift 文档,mutating 和 inout 关键字都用于修改函数内的值类型。 “mutating”和“inout”之间有什么区别,以及我们需要使用它们中的任何一个的任何特殊情况。
最佳答案
mutating
标记一个方法。 inout
标记一个参数。它们是完全不同的东西。
标有mutating
的方法可以改变self
即设置self
的属性,重新分配self
等。
struct Foo {
var foo: Int
mutating func mutate() {
foo += 1 // this is mutating self
}
}
标有inout
的参数基本上成为var
变量,而不是let
常量。您可以更改它们,并且更改也会反射(reflect)在调用方。
func f(_ x: inout Int) {
x = 10
}
var a = 1
f(&a)
print(a) // 10
关于ios - Swift 中的 "mutating"函数和 "inout"参数有什么区别吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55371516/