Sob*_*man 1 cocoa cocoa-touch ios swift
我正在学习Swift,但遇到了Swift的Array类的奇怪行为(未记录),或者,至少在任何地方都没有找到它。
当我创建Array这样的:
var myRegularArray: Array = [Int]()
Run Code Online (Sandbox Code Playgroud)
或像这样:
var myRegularArray: Array = [1, 2, 3]
Run Code Online (Sandbox Code Playgroud)
然后一切都按照书进行:数组是通过常规语法创建的,并且具有定义的类型等。
但
当我输入如下内容时:
var myStrangeArray = ["Some text", 42]
Run Code Online (Sandbox Code Playgroud)
编译器将其视为NSObject实例,而不是an Array或甚至NSArray。如果我使用这种语法Array怎么办?为什么它不是实例?
不是,NSObject但是[NSObject]那是Array<NSObject>。
那么,为什么编译器将其推断为Array<NSObject>?因为NSObject是元素的唯一常见类型。
在这种情况下,"Some text"被推断为NSString,并且42被推断为NSNumber。并且NSObject是他们中最新,唯一的祖先。
| 归档时间: |
|
| 查看次数: |
823 次 |
| 最近记录: |