Ios Swift输入输出参数-用例

Ios Swift输入输出参数-用例,ios,swift,swift2,Ios,Swift,Swift2,我最近在Swift中了解到“输入输出参数”,我有个问题想问你们 当“In-Out参数”比e.x.func更好,返回值可以分配给var时,有什么用例 谢谢您的帮助。我认为inout参数的一个很好的用例是提供的swapTwoInts函数 给定 你可以很容易地打电话 swapTwoInt(&a, b: &b) 场景2:没有inout参数 另一方面,如果没有inout参数,函数应按如下方式编写(实际上更紧凑) 但使用时需要3行代码,而不是1行: let swapped = swapTw

我最近在Swift中了解到“输入输出参数”,我有个问题想问你们

当“In-Out参数”比e.x.func更好,返回值可以分配给var时,有什么用例


谢谢您的帮助。

我认为
inout
参数的一个很好的用例是提供的
swapTwoInts
函数

给定

你可以很容易地打电话

swapTwoInt(&a, b: &b)
场景2:没有inout参数 另一方面,如果没有
inout
参数,函数应按如下方式编写(实际上更紧凑)

但使用时需要3行代码,而不是1行:

let swapped = swapTwoInt(a, b: b)
a = swapped.a // was swapped.b, fixed as suggested by Martin R
b = swapped.b
考虑
如您所见,在场景2中,函数的部分逻辑需要在函数本身之外编写。这并不好,因为它会在每次调用函数时产生编写代码的开销。

“但是使用时需要3行代码,而不是1:…”–不太可能:
(a,b)=swapTwoInt(a,b:b)
。顺便说一句,您的上一个示例执行“双交换”,to
a
b
和以前一样:)@MartinR:你完全正确。我应该删除我的答案吗?一个很好的例子是运算符:查看
+=
防御。我不会说使用
+=
+
更好,但它的代码更少。还有一个例子是所有方法,它们不是用函数式编写的,因此允许可变状态。
swapTwoInt(&a, b: &b)
func swapTwoInt(a: Int, b: Int) -> (a:Int, b:Int) {
    return (a:b, b:a)
}
let swapped = swapTwoInt(a, b: b)
a = swapped.a // was swapped.b, fixed as suggested by Martin R
b = swapped.b