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
.
我有一个简单的案例,我不能正确使用 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
.