为什么在字符串文字中调用时,对字符串调用removeAtIndex:会反转结果?

时间:2015-09-21 04:55:22

标签: swift swift2

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

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

// user: pdxCorey

但是,如果你在字符串文字中调用removeAtIndex:结果是相反的:

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

// user: @

这里发生了什么?

1 个答案:

答案 0 :(得分:2)

这与你是否调用a中的函数无关 字符串文字与否。 String方法

public mutating func removeAtIndex(i: Index) -> Character

从字符串中删除给定索引处的字符 返回该字符作为函数结果。

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

print(user)      // pdxCorey
print(firstChar) // @

在第一种情况下,您在删除后打印user的值 第一个字符,给出" pdxCorey"。

在第二种情况下,您打印的返回值为removeAtIndex() 这是删除的角色" @"。