簡體   English   中英

inift參數在swift 3中

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM