为什么字符串不能用整数值索引

时间:2016-06-16 13:09:39

标签: string swift

我了解到Swift字符串不能用整数值索引。我记得它,我使用规则。但是,我从来没有完全理解它背后的机制。

官方文件的解释如下

" 不同的字符可能需要存储不同数量的内存,因此为了确定哪个字符位于特定位置,您必须从该字符串的开头或结尾遍历每个Unicode标量。因此,Swift字符串不能用整数值"

编制索引

我已多次阅读过,我仍然没有明白这一点。有人能解释一下为什么不能用整数值索引Swift String吗?

非常感谢

1 个答案:

答案 0 :(得分:1)

字符串作为字节数组存储在内存中。

给定字符可能需要1到4个字节用于基本代码点,以及任意数量的组合变音符号。

例如,é需要2个字节。

现在,如果您有字符串efghéfgh,要访问第二个字符(f),对于第一个字符串,该字符位于索引{的字节数组中{1}},对于第二个字符串,它位于索引1

为了知道这一点,你需要检查第一个字符。要根据索引访问任何字符,您需要浏览所有以前的字符以了解每个字符占用的字节数。