Swift   发布时间:2022-04-29  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了如果函数是相似的,Swift如何决定执行哪个函数?大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
像下面的两个函数一样,Swift首先执行哪个函数

有它的模式吗?@H_673_7@

因为我遇到了两个比这更复杂的功能.它首先执行“Any”,无论我对它们做什么顺序(因为我假设它从内存地址执行但似乎没有).@H_673_7@

有人说由于其更广泛的结构或类,它将执行“任何”(在我的另一种情况下).但下面的例子说明了相反的情况.@H_673_7@

想知道为什么以及如何发生这种情况或者我能在哪里得到答案.@H_673_7@

import UIKit

func add(_ x: Int,_ y: Any) -> Int {
    return 3
}

func add(_ a: Int,_ b: int) -> Int {
    return 1
}

print(add(2,3))
// "1\n"

print(add(2,"3"))
// "3\n"

这是我的另一个例:@H_673_7@

let consTraint = titleLabel.layout(.width,.lessThanOrequal,122)

这是我期望执行的:@H_673_7@

func layout(_ attribute: NSLayoutAttribute,_ relatedBy: NSLayoutRelation,_ constant: CGFloat,active: Bool = true,priority: UILayoutPriority = .init(1000)) -> NSLayoutConsTraint {}

它实际执行这个:@H_673_7@

func layout(_ attribute: NSLayoutAttribute,_ toItem: Any?,priority: UILayoutPriority = .init(1000)) -> NSLayoutConsTraint {}

如果swift选择最具体的一个,它不应该执行“Float”吗?@H_673_7@

解决方法

Swift编译器选择与您正在进行调用匹配的函数签名.

您使用两个Int参数调用add时,它会看到有一个带有两个Int参数的add函数,因此它调用一个.@H_673_7@

您使用Int和String调用add时,它首先查找这样的函数,但没有一个函数.然后它看到有一个Int和Any.由于Any可以匹配任何类型,因此匹配.所以一个人被召唤.@H_673_7@

除此之外还有更多内容,但这对你的问题来说已经足够概括了.@H_673_7@

大佬总结

以上是大佬教程为你收集整理的如果函数是相似的,Swift如何决定执行哪个函数?全部内容,希望文章能够帮你解决如果函数是相似的,Swift如何决定执行哪个函数?所遇到的程序开发问题。

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

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。