我有一个简单的问题:为什么Bool
符合AnyObject
的条件
根据Apple的文档:
那么为什么这句话会过去?
let bool = true
let explicitBool: Bool = true
if (bool is AnyObject){
print("I'm an object")
}
if (explicitBool is AnyObject){
print("I'm still an object!")
}
答案 0 :(得分:8)
因为它正在桥接到NSNumber实例。
Swift自动桥接某些本机数字类型,例如Int 和浮动,到NSNumber。 - Using Swift with Cocoa and Objective-C (Swift 2.2) - Numbers
试试这个:
final static Logger log = Logger.getLogger(yourclassname.class);
答案 1 :(得分:4)
此行为是由于Playground运行时桥接到幕后的Objective-C / Cocoa API。 Linux上的Swift 3.0-dev版(LLVM 8fcf602916,Clang cf0a734990,Swift 000d413a62)无论是否使用Foundation导入都不会重现此行为
let someBool = true
let someExplicitBool: Bool = true
print(someBool.dynamicType) // Bool
print(someExplicitBool.dynamicType) // Bool
print(someBool is AnyObject) // false
print(someExplicitBool is AnyObject) // fase