我了解到Swift字符串不能用整数值索引。我记得它,我使用规则。但是,我从来没有完全理解它背后的机制。
官方文件的解释如下
" 不同的字符可能需要存储不同数量的内存,因此为了确定哪个字符位于特定位置,您必须从该字符串的开头或结尾遍历每个Unicode标量。因此,Swift字符串不能用整数值"
编制索引我已多次阅读过,我仍然没有明白这一点。有人能解释一下为什么不能用整数值索引Swift String吗?
非常感谢
答案 0 :(得分:1)
字符串作为字节数组存储在内存中。
给定字符可能需要1到4个字节用于基本代码点,以及任意数量的组合变音符号。
例如,é
需要2个字节。
现在,如果您有字符串efgh
和éfgh
,要访问第二个字符(f
),对于第一个字符串,该字符位于索引{的字节数组中{1}},对于第二个字符串,它位于索引1
。
为了知道这一点,你需要检查第一个字符。要根据索引访问任何字符,您需要浏览所有以前的字符以了解每个字符占用的字节数。