为什么函数参数在Swift中是不可变的?

时间:2016-10-26 17:29:43

标签: swift swift3

Swift 3 documentation表示参数是不可变的:

  

默认情况下,函数参数是常量。

传递给函数时,还会复制states that个值类型:

  

字符串,数组和字典在传递给函数或方法时会被复制。

那么,为什么参数不可变和复制?如果参数是常数,那么我们在函数的范围内不需要它的值的副本。如果复制了参数,则无法在函数中修改传入的原始变量(对于值类型)。

此外,不变性似乎不方便,因为我们无法在不首先将其(再次)明确复制到局部变量的情况下对参数进行局部更改。

我是否错误地阅读了文档?有这么好的理由吗?

1 个答案:

答案 0 :(得分:5)

此处描述的动机如下:https://github.com/apple/swift-evolution/blob/master/proposals/0003-remove-var-parameters.md

tl; dr :它避免与inout关键字混淆。