Входящие параметры в swift 3
Это мой код:
func removeFromString( _ s: inout String, Character c:Character) -> Int {
var s1 = s
var nRemoved = 0
while let ix = s1.characters.index(of: c) {
s1.removeSubrange(ix...ix)
nRemoved += 1
}
return nRemoved
}
var s2 = "everest"
let resb = removeFromString(&s2, Character: Character("e"))
Моя проблема заключается в том, что предполагается использовать s2 для "vrst" после использования параметра inout
s
. Но он вообще не изменяет var s2
. Что плохого я делаю? Или я ожидаю неправильного вывода? Помогите. Спасибо.
Ответы
Ответ 1
Переместив s
в s1
, вы делаете копию, так как String является структурой, и все структуры передаются по значению. Поэтому в итоге вы меняете s1
, а не переданную строку, s
. Просто удалите его:
func removeFromString( _ s: inout String, Character c:Character) -> Int {
var nRemoved = 0
while let ix = s.characters.index(of: c) {
s.removeSubrange(ix...ix)
nRemoved += 1
}
return nRemoved
}