ios - Swift 中的 "mutating"函数和 "inout"参数有什么区别吗?

标签 ios swift struct inout mutating-function

根据 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/

相关文章:

ios - 将 AFNetworking 添加到新项目时出现错误

ios - 在类中定义一段代码,该代码配置为两个目标仅在其中一个目标中运行

ios - React Native Native模块RCTBubblingEventBlock为null

ios - 当用作函数中的参数时,结构值类型前面需要关键字 var

c - 初始化结构中的内联数组 - 如何确保我不会搞砸它?

ios - 通过旋转将 GroundOverlay 从 KML 添加到 MKMapView

macos - NSButton 不允许我设置 imagePosition 属性

ios - 如何禁用 WKWebView 中的自动灰色选择?

C struct->struct->struct->element(通常)段错误

objective-c - 使用 ALAssetsLibrary 访问裁剪或编辑的图像