Swift 如果在字符串文本中调用,为什么对字符串调用removateIndex:会反转结果?

Swift 如果在字符串文本中调用,为什么对字符串调用removateIndex:会反转结果?,swift,swift2,Swift,Swift2,有人能解释一下这种差异吗?例如,如果调用removeAtIndex:,以从字符串中删除第一个字符,则如果在字符串文本之外应用该方法,则它将按预期工作。像这样: var user = "@pdxCorey" user.removeAtIndex(user.startIndex) print("user: \(user)") // user: pdxCorey 但是,如果在字符串文本中调用removateIndex:,则结果相反: var user = "@pdxCorey" print("us

有人能解释一下这种差异吗?例如,如果调用removeAtIndex:,以从字符串中删除第一个字符,则如果在字符串文本之外应用该方法,则它将按预期工作。像这样:

var user = "@pdxCorey"
user.removeAtIndex(user.startIndex)
print("user: \(user)")

// user: pdxCorey
但是,如果在字符串文本中调用removateIndex:,则结果相反:

var user = "@pdxCorey"
print("user: \(user.removeAtIndex(user.startIndex))")

// user: @

这是怎么回事?

这与是否在 字符串是否为文本。
字符串
方法

public mutating func removeAtIndex(i: Index) -> Character
从字符串中删除给定索引处的字符,然后 返回该字符作为函数结果

var user = "@pdxCorey"
let firstChar = user.removeAtIndex(user.startIndex)

print(user)      // pdxCorey
print(firstChar) // @
在第一种情况下,在删除 第一个字符,表示“pdxCorey”

在第二种情况下,您正在打印
removatendex()的返回值
这是删除的字符“@”