Swift类型推断和类型检查问题

Swift类型推断和类型检查问题,第1张

概述我不是在寻找一个如何正确解决的答案,但为什么会这样. 这是代码: func isInt(param: AnyObject?) { if let value = param as? Int { print(value) } else { print("Not Int") } if let value = param { 我不是在寻找一个如何正确解决的答案,但为什么会这样.

这是代码:

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.2let b:float? = 1.2let c:Double? = 1.2isInt(a)isInt(b)isInt(c)

我理解在第一个if循环中,param被转换为Int然后打印出来1.

但是为什么在第二个if循环中,如果值为Int是真的然后打印出1.2?

解决方法 在你的b情况下,让value = param将值桥接到NSNumber类型.对于NSNumber,值为Int将始终为true.

对于非桥接值:

a is Int // always true,AnyObject brIDges to NSNumber hereb is Int // false,cast from float to Int always failsc is Int // false,cast from Double to Int always fails

这个答案假定基金会已被导入.没有基金会,您的任务将失败.

总结

以上是内存溢出为你收集整理的Swift类型推断和类型检查问题全部内容,希望文章能够帮你解决Swift类型推断和类型检查问题所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/web/1008770.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-22
下一篇 2022-05-22

发表评论

登录后才能评论

评论列表(0条)

保存