Swift inout传递的数组似乎不影响原始数组

Swift inout passed array does not seem to effect original array

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

import Foundation

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

          let inString = "abc,def,xyz"
            let file_data = inString.split { [=11=] == ","}.map(String.init)
            print(file_data)
        }

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

输出为:

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

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

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

解决方案:在这一行中:

let file_data = inString.split { [=10=] == ","}.map(String.init)

...删除 let.