CollectionType索引行为

时间:2015-04-15 02:52:02

标签: swift

如果我绑定从一个集合类型计算的索引,例如String,我似乎可以将该索引重用于其他集合。例如:

var str1 = "Hello, World!"
var dex1 = str1.startIndex

var str2 = "Goodbye, All!"

str2[dex1] => "G"

如果将String.Index视为整数偏移量(进入数组),这是有道理的;但是,作为整数的指数远非要求。然而,许多/所有内置的Swift集合类型:ArrayDictionarySetString都具有这些可重复使用的'索引。

这个'重用'跨集合类型有哪些要求?我没有在任何文档中注明过它;我忽略了吗?

在上面的代码示例中,我曾预料到:

> str2[dex1]
Exception: dex1 is not an index of str2

[String只是一个例子;看到粗体问题]

1 个答案:

答案 0 :(得分:0)

答案是,在Apple论坛上,总结:观察到的行为:

  • 不是要求
  • 不应该依赖
  • 对于值类型,可能很难抛出异常