![](/img/trans.png)
[英]Is there any difference between “mutating” function and “inout” parameters in Swift?
[英]Inout parameters in 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"))
我的問題是,在使用inout
參數s
后,應該將s2更改為“vrst” 。 但它根本沒有修改var s2
。 我在做什么錯了? 或者我期待錯誤的輸出? 幫忙。 謝謝。
通過將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
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.