Swift中数组类型的强制转换
题目描述
下方图片中的[String]
是强制类型转换吗?感觉很别扭呀!
相关资料
你期待的结果是什么?实际看到的错误信息又是什么?
帮我分析一下为什么要这么写? 不写[String]
可不可以?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
下方图片中的[String]
是强制类型转换吗?感觉很别扭呀!
帮我分析一下为什么要这么写? 不写[String]
可不可以?
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
接受
或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
发布评论
评论(3)
下方图片中的 [String] 不是强制类型转换。
是拿着 dict 里面的元素,做了一个初始化。
不写 [String] 不可以。
不写 [String] , codes 不是 [String] 类型,是 Dictionary<String, String>.Keys 类型。
写了 [String] ,就是 [String] 类型了。
因为不写 [String] ,是 Swift 中的浅拷贝。codes 指向的内存,还是 dict 的 keys .
写了 [String] ,就是重新给 codes 分配了一片内存,针对他的操作与原来的 dict 无关。
如果 Swift 不这么设计,每次改 codes 就是, copy on write . 语义上,不清晰,也就不安全
代码如下:
这是语法呀,不写就是Any吧。
不行,Swift中语法规定了 Array创建的时候需要指明存放什么类型,如果尚未确定一般用 Any 或 AnyObject声明,这个写法并不是强制类型转换
仔细研究swift你会发现 它真的是一种严谨性语言,对于可能产生的结果它认为开发者应该都是知道并明确的,如果有遗漏则会强制报错提示,OC由于做了很多隐式转换所以往往导致出现了一些可能预期之外的结果