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

赛车手X

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

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

// user: pdxCorey

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

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

// user: @

这里发生了什么?

马丁·R

这与是否在字符串文字内部调用函数无关。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()是已删除的字符“ @”。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

为什么在递归调用中为字符串编制索引会产生不同的结果?

在字符串上调用toString

在字符串上调用str()的代价?

在字符串文字上调用equals

在laravel中的字符串上调用成员函数format()

在JavaScript中的字符串上调用forEach

在laravel中的字符串上调用成员函数latest()

为什么在字符串上调用属性不会给出错误?

为什么通过在空字符串和仅包含分隔符的字符串上调用split()来获得大小不同的数组

如果在scanf函数中对字符串使用“&”会怎样?

颜色字如果在字符串中

在字符串上调用replace引发EvaluatorException

错误:在字符串上调用成员函数setPayrollperiodid()

在字符串上调用成员函数all()(查看:

Laravel错误:在字符串上调用成员函数format()

PHP:在字符串上调用成员函数contains()

致命错误:在字符串上调用成员函数prepare()

Yii 2 在字符串上调用成员函数 saveAs()

错误:在字符串上调用成员函数 addDays()

致命错误:在字符串上调用成员函数

Lua从字符串上调用函数吗?

在字符串上调用成员函数addEagerConstraints()

在字符串上调用成员函数fill()

在字符串上调用成员函数 setDate()

在 Yii 的字符串上调用成员函数 saveAs()

在字符串上调用成员函数guessExtension()

Laravel 5.6:在字符串上调用成员函数getRealPath()

错误:在字符串上调用成员函数storeAs()

在字符串上调用成员函数getRealPath()