swift - Swift inout 传递的数组似乎不会影响原始数组
问题描述
我有一个简单的案例,我不能正确使用 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 并在调用中使用了 & 。
解决方案
你用inout
得很好。问题是你使用的方式let
。您正在创建另一个 file_data
使inout
变量黯然失色的事物;它inout
本身永远不会被触及,所以它什么也不会发生。
解决方案:在这一行:
let file_data = inString.split { $0 == ","}.map(String.init)
...删除let
。
推荐阅读
- typescript - 属性值更改后点亮元素不更改视图
- javascript - 每次单击按钮时都会呈现元素
- c++ - 没有将 lambda 函数参数与模板函数匹配的函数调用
- python - How do I compare two large 2D arrays in Python for exact equality?
- javascript - How to only print my textarea in pdf not whole page
- odoo-13 - Is there any way to relate OpenEdx to odoo 13?
- string - base64.decode: Invalid encoding before padding
- python - How to check file ACL size
- abp - An exception was thrown while activating Castle.Proxies.AlertAppServiceProxy
- swift - @State is not working on iPad Swift Playgrounds