比如,随便定义一个字符串
var str1 = "it's useless"
var str2 = "This is a string test"
let startIndex = str1.startIndex
print(str2[startIndex])
输出的是"T",说明用str1定义的startIndex一样可以被其他字符串用,这是不是有点不够严谨?
非常好的问题!强烈建议慕课网可以给问题点赞!
目前,String.Index类型完全可以当做一个整型来看。封装成这个新的类型是为了保证能够在字符串中通行处理Unicode字符的相关的问题。在这个意义下,startIndex就是一个0,可以被使用在任何其他字符串中。
但是必须承认,这是不安全的,同时也失去了str1.startIndex这样声明的意义!也就是说str1.startIndex不能充当str1的迭代器!
我之前没有尝试这个问题,现在看来,这个地方确实不够严谨。不过swift还在不断进化。可能以后,这个问题会被修改。可以关注苹果官方的这个repo来了解swift的进一步进化方向:https://github.com/apple/swift-evolution
同时,也希望关注这个课程的github:https://github.com/liuyubobobo/Play-with-Swift-2,多提宝贵意见!谢谢你!
startIndex是一个由str1赋值的Index类型的常量,被str2调用没什么问题吧...