当我使用Xcode 7.1开发Swift 2.2时,有两种情况让我感到困惑,请看下面的例子,谢谢。
首先,当我导入Foundation后,我声明了一个testArray,其中包含两个项目,一个整数类型1和一个字符串类型"hello",我的问题是为什么Swift类型推断将testArray推断为Array(NSObject)而不是Array(Any)。
import Foundation
let testArray = [1, "hello"]
print(testArray.dynamicType) //testArray is Array<NSObject>
其次,当我删除import Foundation时,下面的代码无法编译,错误信息为“在没有更多内容的情况下表达式的类型是不明确的”,我的问题是为什么Swift在这种情况下不能将Array(Any)进行类型推断。谢谢帮助。
let testArray2 = [2, "world"]
print(testArray2)
//can't compile, error message = "Type of expression is ambiguous without more content"
NSObject
(或者AnyObject
,但不能在这里使用,尽管我经常见到它被使用)并没有比Any
更具体化多少。 - nhgrif