0

我有一个简单的案例,我不能正确使用 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 并在调用中使用了 & 。

4

1 回答 1

6

你用inout得很好。问题是你使用的方式let。您正在创建另一个 file_data使inout变量黯然失色的事物;它inout本身永远不会被触及,所以它什么也不会发生。

解决方案:在这一行:

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

...删除let

于 2020-10-07T21:31:02.920 回答