#swift #inout
#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: amp;array)
print(array)
Вывод:
["abc", "def", "xyz"]
["initial string"]
Содержимое переданного массива изменилось, как видно на первом отпечатке, но не изменилось, как кажется на втором отпечатке. У меня есть это как переменная, и я использовал amp; в вызове.
Комментарии:
1. Это не имеет никакого смысла. Вы даже не используете исходные элементы массива.
Ответ №1:
Вы используете inout
просто отлично. Проблема в том, как вы используете let
. Вы создаете другой file_data
, который затмевает inout
переменную; inout
сама переменная никогда не затрагивается, поэтому с ней ничего не происходит.
Решение: в этой строке:
let file_data = inString.split { $0 == ","}.map(String.init)
…удалить let
.