我不是在寻找如何正确地做到这一点的答案,而是为什么会发生这种情况。
这是代码:
func isInt(param: AnyObject?) {
if let value = param as? Int {
print(value)
} else {
print("Not Int")
}
if let value = param {
if value is Int {
print(value)
} else {
print("Not Int")
}
}
}
let a:AnyObject? = 1.2
let b:Float? = 1.2
let c:Double? = 1.2
isInt(a)
isInt(b)
isInt(c)
我明白在第一个if循环中,将param被转换为Int然后打印出来1。
但是为什么在第二个if循环中,if value is Int是真的然后打印出来1.2?