`i

`inout` 参数 属于 Swift

1 个练习

关于 `inout` 参数

在函数体内,形参被视为常量,而不是变量;试图修改形参的值会引发编译时错误。 如果函数想要修改某个形参的值,就必须使用输入输出参数,把这种可修改性明确表达出来。

要使用输入输出参数,程序员必须确定三件事:

  1. 函数定义必须显式标出输入输出参数,即在形参的类型标注中,把关键字inout写在:和类型名之间。
  2. 传给输入输出参数的值必须声明为变量,而不是常量。同样,它也不能是字面量。
  3. 调用函数时,变量名前必须加上&,明确表示它可以被修改。

完成这些之后,函数会在内部复制一份输入输出参数,按函数体中的指示修改它,然后在函数返回时把修改后的值复制回传入的那个变量。

func updateVersion(_ record: inout (version: Int, title: String)) {
  record.version += 1
}

var dbRecord = (version: 2, title: "Exercism")
updateVersion(&dbRecord)

// dbRecord is now (3, "Exercism")
关于输入输出参数,还有几条额外的规则需要了解。

1. 在带有输入输出参数的函数内部,不允许引用作为输入输出参数传入的那个变量。
2. 同一个变量不能在同一个函数中作为多个输入输出参数传入。
   例如,`inoutFunc(&mutVar, &mutVar)`会引发编译器错误。
通过 GitHub 编辑 该链接会在新窗口或标签页中打开

学习 `inout` 参数