大佬教程收集整理的这篇文章主要介绍了Swift Generics – 调用哪种方法?,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
protocol AwesomeType: Equatable { var thingy: Int { get } } extension Array where Element: Equatable { func doThing { ... } } extension Array where Element: AwesomeType { func doThing { ... } } extension String: AwesomeType { var thingy: Int { return 42 } }
如果@L_607_0@一个字符串数组 – [“Foo”,“Bar”,“Baz”] – 我在其上调用doThing(),将调用哪个实现?为什么?
我相信这是在编译时确定的;换句话说,它不是一个动态的调度.但它是如何确定的?感觉它类似于协议扩展的规则,但这是一个动态的调度情况……
protocol AwesomeType: Equatable { } extension Array where Element: Equatable { func doThing() { print("array one") } } extension Array where Element: AwesomeType { func doThing() { print("array two") } } extension String: AwesomeType { } let arr = [ "Foo","Bar","Baz" ] arr.doThing()
编译器抱怨
以上是大佬教程为你收集整理的Swift Generics – 调用哪种方法?全部内容,希望文章能够帮你解决Swift Generics – 调用哪种方法?所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。