大佬教程收集整理的这篇文章主要介绍了swift – 带扩展名的自动类型转换:这里发生了什么?,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我去了“实验”:
我得到它像这样工作:
extension Double { var absoluteValue: Double { if(self < 0) { return self * -1 } return self } } (-10.5).absoluteValue // 10.5
但它似乎也适用于整数:
(-4).absoluteValue // 4.0
这里发生了什么?编译器是否将类型从Int更改为Double,因为它看到Double上有一个absoluteValue扩展而不是Int?
这似乎是这种情况,因为如果我在Int上添加同名的另一个扩展名,如下所示:
extension Int { var absoluteValue: Int { return 42 } }
这会覆盖Double上的扩展名.并且(-4).absoluteValue返回42
有没有办法添加一个仅适用于双打但不适用于Ints的扩展程序?
编辑:看起来它正在编译时进行转换,因为我没有为我的文字定义一个类型,所以它转换了它.以下产生错误
var i:Int = -4; i.absoluteValue
var i = -4; i.absoluteValue
以上是大佬教程为你收集整理的swift – 带扩展名的自动类型转换:这里发生了什么?全部内容,希望文章能够帮你解决swift – 带扩展名的自动类型转换:这里发生了什么?所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。