【问题标题】:Swift inout passed array does not seem to effect original arraySwift inout 传递的数组似乎不会影响原始数组
【发布时间】:2020-10-07 21:27:57
【问题描述】:

我有一个简单的案例,我不能正确使用 inout。

import Foundation

func test_inout(file_data: inout Array<String>){

          let inString = "abc,def,xyz"
            let file_data = inString.split { $0 == ","}.map(String.init)
            print(file_data)
        }

var array: Array = ["initial string"]
test_inout(file_data: &array)
print(array)

输出是:

["abc", "def", "xyz"]
["initial string"]

传递的数组的内容在第一次打印时发生了变化,但在第二次打印时没有发生变化。我确实将它作为 var 并在调用中使用了 &。

【问题讨论】:

  • 这没有任何意义。您甚至没有使用原始数组元素。

标签: swift inout


【解决方案1】:

您使用inout 很好。问题在于您使用let 的方式。您正在创建另一个 file_data,它掩盖了inout 变量; inout 本身从未被触及,因此它没有任何反应。

解决方案:在这一行:

let file_data = inString.split { $0 == ","}.map(String.init)

...删除let

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-04-01
    • 2018-04-05
    • 2017-07-31
    • 2019-10-14
    • 2019-09-10
    • 2013-08-12
    • 2021-07-05
    • 1970-01-01
    相关资源
    最近更新 更多