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

标签 swift swift3

Swift 3 documentation声明参数是不可变的:

Function parameters are constants by default.

它也是states that值类型在传递给函数时被复制:

Strings, arrays, and dictionaries are copied when they are passed to a function or method.

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

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

我是否错误地阅读了文档?出现这种情况是否有充分的理由?

最佳答案

这里描述了这样做的动机:https://github.com/apple/swift-evolution/blob/master/proposals/0003-remove-var-parameters.md

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

关于swift - 为什么函数参数在 Swift 中是不可变的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40268619/

相关文章:

ios - UISearchBar searchBarCancelButtonClicked 未使用 Swift 3 调用

ios - Swift 3 仅在设备上调试时含糊不清地使用下标

ios - 为什么我的 UITextView 没有显示在我的 Swift/iOS 应用程序的自定义表格单元格中?

swift - for...in 循环中的三个变量使用 Swift

arrays - 对数组的元素进行排序 (Swift)

ios - Swift3-调试时后台抓取崩溃

ios - 从 'JSON' 转换为无关类型 'String' 总是失败

ios - 如何使用自定义转换在当前上下文中呈现 View Controller ?

ios - 通过检查列表是否包含其他列表的元素进行过滤。怎么做?

ios - 翠鸟图像调整从 url 加载的图像大小