题目描述
下方图片中的[String]
是强制类型转换吗?感觉很别扭呀!
相关资料
你期待的结果是什么?实际看到的错误信息又是什么?
帮我分析一下为什么要这么写? 不写[String]
可不可以?
下方图片中的[String]
是强制类型转换吗?感觉很别扭呀!
帮我分析一下为什么要这么写? 不写[String]
可不可以?
不行,Swift中语法规定了 Array创建的时候需要指明存放什么类型,如果尚未确定一般用 Any 或 AnyObject声明,这个写法并不是强制类型转换
仔细研究swift你会发现 它真的是一种严谨性语言,对于可能产生的结果它认为开发者应该都是知道并明确的,如果有遗漏则会强制报错提示,OC由于做了很多隐式转换所以往往导致出现了一些可能预期之外的结果
下方图片中的 [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 . 语义上,不清晰,也就不安全
代码如下: