为了账号安全,请及时绑定邮箱和手机立即绑定

str.startIndex和str.endIndex是可以用随便的String变量定义的

比如,随便定义一个字符串

var str1 = "it's useless"

var str2 = "This is a string test"

let startIndex = str1.startIndex

print(str2[startIndex])

输出的是"T",说明用str1定义的startIndex一样可以被其他字符串用,这是不是有点不够严谨?


正在回答

2 回答

非常好的问题!强烈建议慕课网可以给问题点赞!

目前,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,多提宝贵意见!谢谢你!

1 回复 有任何疑惑可以回复我~

startIndex是一个由str1赋值的Index类型的常量,被str2调用没什么问题吧...

0 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

str.startIndex和str.endIndex是可以用随便的String变量定义的

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信