Swift中的“变异”函数和“输入”参数之间有什么区别吗?

sub*_*272 4 struct ios swift mutating-function inout

根据Swift文档,mutation和inout关键字均用于从函数内部修改值类型。“变异”和“输入”之间是否有任何区别,以及在任何需要使用它们之一的特殊情况下,有什么区别。

Swe*_*per 12

mutating标记方法。inout标记参数。他们是完全不同的东西。

mutating有的方法可以更改,self即设置self,重新分配self等的属性。

struct Foo {
    var foo: Int

    mutating func mutate() {
        foo += 1 // this is mutating self
    }
}
Run Code Online (Sandbox Code Playgroud)

与常量相反,标inout有的参数基本上变为var变量let。您可以更改它们,更改也将反映在呼叫者一方。

func f(_ x: inout Int) {
    x = 10
}

var a = 1
f(&a)
print(a) // 10
Run Code Online (Sandbox Code Playgroud)